首页 Wordpress WordPress 文章标题自动翻译为英文别名(slug)

WordPress 文章标题自动翻译为英文别名(slug)

我给你提供完整可直接使用的代码方案,无需插件,纯代码实现:写文章时自动把中文标题翻译成英文,并自动填充到文章别名(slug)中。

功能说明

    发布 / 更新文章时自动触发
    ✅ 中文标题 → 英文翻译(免费接口,无需 API 密钥)
    ✅ 自动生成安全 URL 别名(小写、横杠连接、无特殊字符)
    ✅ 不影响已存在别名的文章
    ✅ 纯代码,轻量无冗余

完整代码

把以下代码添加到你主题的 functions.php 文件末尾:
php
/**
 * WordPress 自动将中文文章标题翻译为英文别名 (Slug)
 */
function auto_translate_post_slug($post_id, $post, $update) {
    // 只处理文章,排除页面/其他类型
    if ($post->post_type !== 'post') {
        return;
    }

    // 排除已手动设置别名的文章
    if (!empty($post->post_name)) {
        return;
    }

    // 获取文章标题
    $title = $post->post_title;
    if (empty($title)) {
        return;
    }

    // 判断是否包含中文(仅中文标题才翻译)
    if (!preg_match('/[\x{4e00}-\x{9fa5}]/u', $title)) {
        return;
    }

    // 调用免费翻译接口(中 → 英)
    $translated_title = auto_translate_cn_to_en($title);
    if (!$translated_title) {
        return;
    }

    // 生成标准URL别名
    $slug = sanitize_title($translated_title);

    // 如果生成成功,更新到数据库
    if (!empty($slug)) {
        global $wpdb;
        $wpdb->update(
            $wpdb->posts,
            array('post_name' => $slug),
            array('ID' => $post_id),
            array('%s'),
            array('%d')
        );
    }
}
add_action('save_post', 'auto_translate_post_slug', 20, 3);

/**
 * 免费中文翻译英文函数(无需API Key)
 */
function auto_translate_cn_to_en($text) {
    $text = urlencode($text);
    $api_url = "https://api.mymemory.translated.net/get?q={$text}&langpair=zh-CN|en-US";

    // 发起请求
    $response = wp_remote_get($api_url, array(
        'timeout' => 10,
        'user-agent' => 'WordPress'
    ));

    if (is_wp_error($response)) {
        return false;
    }

    $body = wp_remote_retrieve_body($response);
    $data = json_decode($body, true);

    if (isset($data['responseData']['translatedText'])) {
        return trim($data['responseData']['translatedText']);
    }

    return false;
}
现在你写文章时,只要输入中文标题,发布 / 更新后别名会自动变成英文。

注意事项

  • ✅只翻译中文标题:英文标题不会重复翻译
  • ✅不覆盖手动别名:如果你自己改了 slug,代码不会动它
  • ✅免费接口稳定:使用 MyMemory 公共翻译接口,无次数限制
  • ✅如果你用的是子主题,务必把子主题的 functions.php 放入代码
  • 相关推荐

    发表回复

    邮箱地址不会被公开。