我给你提供完整可直接使用的代码方案,无需插件,纯代码实现:写文章时自动把中文标题翻译成英文,并自动填充到文章别名(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 放入代码