大家好!😊今天我们将学习如何在WordPress网站上构建一套系统,实现对现有文章和新文章的自动翻译,同时完成SEO优化。
本课程将结合DeepL API、Polylang插件和Yoast SEO,打造一次设置即可自动翻译的完整环境。🚀

注:DeepL API每月提供50万字符的免费翻译额度。
📌 课程目标
1️⃣ 将
所有已发布的韩语文章自动翻译为英语和日语2️⃣ 新增文章实现实时自动翻译3️⃣
翻译后保持HTML结构完整性,避免
内容错乱4️⃣ 应用SEO(搜索引擎优化)设置,最大化搜索
曝光率5️⃣ 防止重复翻译,已译内容不再翻译
💡 1. 项目准备
首先需完成项目准备工作,确保以下步骤就绪:
📌 必备安装项
✅ WordPress网站
✅ Polylang插件(多语言支持)
✅ Yoast SEO插件(搜索优化)
✅ DeepL API密钥申请(翻译API使用)
📌 DeepL API密钥申请
使用DeepL翻译API需获取API密钥:
1️⃣ 访问DeepL API
官网 2️⃣ 注册账户后生成API密钥
3️⃣ 复制API密钥(YOUR_DEEPL_API_KEY 输入至相应位置)
💡 2. 代码编写:构建自动翻译系统
现在 functions.php添加代码构建翻译系统。
📌 2-1. 现有文章自动翻译代码
首先,我们将创建自动翻译所有已发布文章的代码。
// 이미 번역된 글인지 확인하는 함수 (중복 번역 방지)
function is_already_translated($post_id, $lang) {
$translations = pll_get_post_translations($post_id);
return isset($translations[$lang]); // 해당 언어의 번역 존재 여부 확인
}
// 기존 모든 게시물을 번역하는 함수 (한 번만 실행)
function auto_translate_existing_posts() {
$languages = [
'en' => ['prefix' => 'en', 'sep' => '-', 'sitename' => get_bloginfo('name')],
'ja' => ['prefix' => 'ja', 'sep' => '-', 'sitename' => get_bloginfo('name')],
];
$args = [
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
];
$posts = get_posts($args);
foreach ($posts as $post) {
if (pll_get_post_language($post->ID) !== 'ko') continue;
foreach ($languages as $lang => $settings) {
if (is_already_translated($post->ID, $lang)) {
continue; // 이미 번역된 경우 건너뜀
}
$translated_title = deepl_translate_with_html($post->post_title, $lang);
$translated_content = deepl_translate_with_html($post->post_content, $lang);
$translated_slug = $settings['prefix'] . '-' . sanitize_title($translated_title);
$seo_title = $translated_title . ' ' . $settings['sep'] . ' ' . $settings['sitename'];
$translated_post_id = wp_insert_post([
'post_title' => $translated_title,
'post_content' => $translated_content,
'post_status' => 'publish',
'post_type' => $post->post_type,
'post_author' => $post->post_author,
'post_name' => $translated_slug,
'post_category' => wp_get_post_categories($post->ID),
'meta_input' => [
'_yoast_wpseo_title' => $seo_title,
],
]);
pll_set_post_language($translated_post_id, $lang);
pll_save_post_translations([
'ko' => $post->ID,
$lang => $translated_post_id,
]);
}
}
}
// 기존 게시물 번역 실행 (한 번만 실행)
add_action('admin_init', function () {
if (isset($_GET['run_translation']) && $_GET['run_translation'] === '1') {
auto_translate_existing_posts();
wp_die('Translation for all existing posts completed.');
}
});
🚀 现在在浏览器中执行下方URL,所有现有文章都会被翻译!
(your-site.com(需将 替换为您的网站域名)
https://your-site.com/wp-admin/?run_translation=1
📌 2-2. 新文章自动翻译代码
✅ 设置新文章发布时自动翻译功能。
function auto_translate_and_seo_publish($post_id) {
$original_post = get_post($post_id);
if ($original_post->post_status !== 'publish') return;
$languages = [
'en' => ['prefix' => 'en', 'sep' => '-', 'sitename' => get_bloginfo('name')],
'ja' => ['prefix' => 'ja', 'sep' => '-', 'sitename' => get_bloginfo('name')],
];
if (pll_get_post_language($post_id) !== 'ko') return;
foreach ($languages as $lang => $settings) {
if (is_already_translated($post_id, $lang)) {
continue; // 이미 번역된 경우 건너뜀
}
$translated_title = deepl_translate_with_html($original_post->post_title, $lang);
$translated_content = deepl_translate_with_html($original_post->post_content, $lang);
$translated_slug = $settings['prefix'] . '-' . sanitize_title($translated_title);
$seo_title = $translated_title . ' ' . $settings['sep'] . ' ' . $settings['sitename'];
$translated_post_id = wp_insert_post([
'post_title' => $translated_title,
'post_content' => $translated_content,
'post_status' => 'publish',
'post_type' => $original_post->post_type,
'post_author' => $original_post->post_author,
'post_name' => $translated_slug,
'meta_input' => [
'_yoast_wpseo_title' => $seo_title,
],
]);
pll_set_post_language($translated_post_id, $lang);
pll_save_post_translations([
'ko' => $post_id,
$lang => $translated_post_id,
]);
}
}
// 새로운 글이 게시될 때 자동 번역 실행
add_action('publish_post', 'auto_translate_and_seo_publish');
🚀 最终整理
✅ 如何翻译所有旧文章?
- 仅需执行一次:
https://your-site.com/wp-admin/?run_translation=1
✅ 如何翻译新文章?
- 撰写新文章后自动翻译。(无需额外操作)
✅ 若需重新生成已翻译文章?
- 删除原有翻译文章后重新执行。
💡 如今您可在WordPress中实现完全自动化的多语言内容运营!🚀 若有任何疑问,随时欢迎咨询!😊
📌 执行后需额外确认的事项
- 确认翻译文章是否生成
- WordPress管理后台 → "所有文章"中检查是否生成英语(
en)、日语(ja)的翻译文章是否存在。
- WordPress管理后台 → "所有文章"中检查是否生成英语(
- URL验证
- 韩语文章:
https://example.co.kr/올림픽-일정/ - 英文文章:
https://example.co.kr/en/olympic-schedule/ - 日语文章:
https://example.co.kr/ja/オリンピック日程/
- 韩语文章:
- 确认翻译内容在Polylang中是否正确关联
- WordPress管理后台 → Polylang中确认翻译关联关系。
📌 现有文章翻译完成后无需再次执行
✅ 现有文章翻译完成后无需再次执行此URL。
✅ 后续撰写新文章时将自动完成翻译。
📌 补充说明
Q1. 是否可以多次执行此URL?
✅ 已翻译文章不会重复处理,多次执行不会造成问题。
✅ 因代码中包含防止重复翻译的机制 (is_already_translated())已内置其中。
Q2. 如何重新翻译现有文章?
🚨 需先删除原有翻译再重新执行。
✅ 请删除已翻译内容后 https://your-site.com/wp-admin/?run_translation=1 后重新执行。
Q3. 若翻译未自动进行?
❌ 若执行后仍未翻译,请确认:
functions.php代码是否正确添加至- DeepL API密钥是否正确配置。
- 确认Polylang插件是否已激活。
- WordPress管理后台 → 设置 → 固定链接(Permalink)→ 点击保存按钮后重新执行。