如何将多语言内容导入 WordPress – WooCommerce、CSV 和 XML
了解如何将多语言内容批量导入 WordPress。WPML 会为每一行分配正确的语言,并链接不同语言的翻译。本指南涵盖 WooCommerce 产品目录、房地产列表、事件源以及任何由电子表格驱动的内容导入。
WPML导出和导入与您已在使用的 WordPress 导入插件协同工作。导入插件负责移动您的数据。WPML导出和导入会在最后添加语言信息,以便每一行都归入正确的语言,并将每条翻译链接到其源内容。
开始之前
在您要导入的目标站点上安装并激活以下插件:
- 导入插件:WP All Import Pro、WP All Export Pro、原生 WooCommerce CSV 导入器或标准 WordPress 导入器。
- WPML 和 WPML 字符串翻译。
- WPML导出和导入(本页介绍的附加组件)。
- WPML Multilingual & Multicurrency for WooCommerce(如果您要导入 WooCommerce 产品)。
在导入站点上,为 WPML 设置您计划导入的所有语言。在运行导入之前,目标语言必须已经存在于 WPML > 设置 > 语言中。
两条路径 – 选择与您的源内容匹配的路径
根据多语言数据的来源,有两条导入路径:
- 支持的导入插件。如果您使用 WP All Export Pro(或其他受支持的导出工具)将内容移出现有的 WordPress 站点,WPML导出和导入已存在于导出文件中 – 语言信息会自动包含在内。请跳至下文的运行 WPML 导入步骤。
- 自定义 CSV 或 XML。如果您在电子表格中维护多语言数据,或者您的数据源是非 WordPress 系统(PIM、MLS、ERP、预订平台),则需要手动在文件中添加三个语言列。请继续阅读下文的准备您的 CSV 或 XML。
准备带有三个语言列的 CSV 或 XML
对于自定义导入,请在电子表格的每一行添加三个列。WPML 正是通过这些列将翻译配对在一起,并为每一行标记正确的语言:
_wpml_import_translation_group。同一内容的所有语言版本共享的唯一值。对于产品,请使用 SKU。对于其他所有内容,请生成您自己的 ID,并将其重复用于源语言行及其每一条翻译。_wpml_import_language_code。该行的 ISO 语言代码(en代表英语,es代表西班牙语,fr代表法语,pt-pt代表欧洲葡萄牙语等)。_wpml_import_source_language_code。仅用于翻译行;表示原始语言的语言代码。对于源语言行,请将其留空。
对于 WP All Import Pro 及类似工具,请准备两个电子表格:一个用于分类法(类别、标签、产品类别),另一个用于文章和产品。原生 WooCommerce CSV 导入器只需一个电子表格,因为产品类别包含在产品行中。
可变产品的自定义 WooCommerce 属性
如果您拥有带自定义属性的可变产品,请在翻译的产品行中添加第四列:_wpml_import_wc_local_attribute_labels。该值是一个由 slug:translation 对组成的 JSON 对象。对于具有 Size 和 Color 属性的法语可变产品:
{"size":"Taille","color":"Couleur"}
别名是小写的属性名称,其中的空格替换为破折号。
导入顺序
当您有单独的分类法文件时,请始终先导入分类法。类别、标签和任何其他分类法必须先存在,然后文章和产品才能引用它们。随后再导入文章、页面、产品和其他内容类型。
如果您将数据拆分为每种语言一个文件,请在运行 WPML 连接步骤之前导入所有语言文件。
在导入插件中映射语言列
每个导入插件都有自己处理自定义列的方式。关键步骤是将三个 WPML 列映射到自定义字段(对于分类法,则是术语元数据)。在 WP All Import Pro 中,这在导入向导的第 3 步中进行:
- 对于文章和产品。打开自定义字段,添加三个字段,将语言列拖到值框中,并在名称框中使用不带括号的列名。
- 对于分类法。打开术语元数据,添加三个术语元数据字段,并以相同方式映射语言列。
如果未映射这些列,WPML 在您运行连接步骤时将无内容可读。
导入和连接步骤之间您会看到什么
在运行WPML导出和导入之前,导入的内容都位于您的默认语言下,并且 WPML 会自动将文章和产品保持在草稿状态,以防止前端出现混合语言内容。这是预期的中间状态,并不表示导入失败。
对于不受支持的导入插件,您需要在连接步骤完成后手动发布文章。
运行 WPML 导入
导入插件完成工作后:
- 在 WordPress 管理后台中打开 WPML > 导出和导入。
- 单击运行 WPML 导入。
WPML 会读取每一行的语言列,为该行分配语言,并将翻译链接到其源内容。在大型目录上,这可能需要几分钟时间。完成后,您导入的内容将以正确的语言发布,并且每条翻译都连接到其源内容。
在后端和前端进行抽查:
- 打开文章类型或产品列表 – 确认每一行都显示在正确的语言旗帜下。
- 访问前端并切换语言 – 每个翻译页面都应加载其翻译版本,而不是回退到源内容。
如果分类法翻译未能成功链接,请在 WordPress 管理后台中打开该术语,并使用该术语的“语言”框将其连接到默认语言术语。
自动化 – 在每次计划导入后运行 WPML 导入
对于夜间同步、供应商数据源或任何计划导入,WPML 连接步骤可以在导入插件完成后自动运行。有三种方法可以实现此连接:
选项 1 – POST 端点(针对 Cron 驱动的导入,如 WP All Import 计划操作)
这是推荐的方法。在 wp-config.php 中添加一个强密钥:
define( 'WPML_IMPORT_KEY', 'your-strong-secret-key-here' );
然后,在您的计划导入设置中添加第二条命令。它会向您的站点发送 POST 请求,并在请求正文中传递该密钥:
curl -X POST https://yoursite.com/ \
-d 'wpml_import_trigger=your-strong-secret-key-here'
使用 wget 的相同调用:
wget -q -O - \
--post-data='wpml_import_trigger=your-strong-secret-key-here' \
https://yoursite.com/
对于 WP All Import Pro 的手动计划,请在导入命令之后立即添加上述任一命令。
当连接步骤运行时,您的站点会响应状态 200 以及以下消息:
Import process completed
另外两种响应会告知您发生了什么:401 表示密钥不匹配,204 表示没有剩下需要处理的内容。
选项 2 – URL 端点(已弃用)
在WPML导出和导入 1.2.0 之前,您需要在 URL 中传递密钥:
https://yoursite.com/?wpml_import_trigger=your-strong-secret-key-here
此 URL 仍然有效,因此您当前的 cron 作业将继续运行。它已被弃用,WPML 将在下一个主要版本中将其移除。
原因在于密钥。URL 会经过服务器日志、浏览器历史记录和分析工具,您的密钥也会随之传递。而 POST 请求会将密钥保留在请求正文中。请将您的计划导入更改为选项 1 中的 POST 调用。
选项 3 – 操作钩子(针对 PHP 计划的导入)
如果您使用 Action Scheduler 或 wp_schedule_single_event 从 PHP 计划导入,请使用一个操作调用来触发 WPML 步骤:
do_action( 'wpml_import_process' );
要在导入操作之后立即将其作为一次性后台任务运行:
wp_schedule_single_event( time(), 'wpml_import_process' );
如果这些路径中的任何一个发生失败,请在 wp-config.php 中开启 WP_DEBUG_LOG,以在 PHP 错误日志中捕获该错误。
从命令行运行 WPML 导入
对于部署脚本、容器构建或任何管理后台 UI 不可用的管道,请从 WP-CLI 运行连接步骤:
wp wpml import process
该命令会报告已连接了多少条翻译。它是运行 WPML 导入按钮的直接替代方案。
常见陷阱
- 导入文件缺少三个语言列。内容可以导入,但会成为未标记的源语言行;运行 WPML 导入将无内容可连接。解决方法:将这些列添加到您的源数据中,重新导出,然后重新导入。
- 跳过了 WP All Import 的自定义字段 / 术语元数据映射。情况与缺少列相同。数据在文件中,但导入插件未将其存储在文章上。请在映射字段后重新运行导入。
- 导入站点上未设置目标语言。为未配置语言导入的行将归入默认语言。请先在 WPML > 设置 > 语言中添加缺少的语言,然后重新运行。
- 不受支持的导入插件。导入的文章在连接步骤后仍保持在草稿状态。请手动发布它们,或切换到受支持的插件。
- 未传递语言数据的自定义导入脚本。需要在脚本级别进行修复。三个语言列(以及 WooCommerce 属性列,如果适用)需要到达相应的行。
如果导入一直遇到相同的问题,WPML 支持团队会全天候(24/7)解答导入相关问题。
如果您在寻找 WPML All Import 插件
WPML All Import 是早于 WPML导出和导入的旧版插件。它不再受支持,也不推荐使用。上述过程是将多语言内容导入 WordPress 站点的最新方法 – 请使用该方法,而不是旧版插件文档中描述的任何工作流程。
由 Amir 撰写 · 最后更新于 2026年7月2日
作者:Amir · 最后更新时间:2026年7月2日