搜索全站
安装部署 6 分钟阅读

WP-CLI 导出导入 WordPress 内容:WXR 文件的正确用法与限制

WordPress 的 WXR(WordPress eXtended RSS)是跨站点迁移内容的标准格式。本文讲解用 wp export 按条件导出文章、页面、自定义文章类型与附件,用 wp import 导入并处理图片下载、作者映射与大小限制,并说明 WXR 能迁移什么、不能迁移什么。

U
UFO_PF 2018-04-30 · 阅读 6 分钟
WP 安装部署
阅读提示
本文约 2,270 字,预计阅读 6 分钟。文中命令与配置均经过实测,可直接参考执行。

引言:只想要文章内容,不要整站数据时怎么办

整站迁移(打包文件 + 导数据库)适合换服务器。但如果你的需求是:

  • 从旧站把 300 篇文章搬进新站,但主题、设置、插件都不动;
  • 把某个自定义文章类型(比如产品)单独导出给另一个站点;
  • 定期给编辑导出一批草稿做离线审阅;

整站迁移就太重了。这时候应该用 WXR 导出——它只搬内容,不搬配置。

原理分析:WXR 到底是什么

WXR 是 WordPress 自己定义的 XML 格式,扩展自 RSS 2.0。一个 .xml 文件里包含:

  • 文章、页面、自定义文章类型的正文与元数据;
  • 分类、标签、自定义分类法;
  • 评论;
  • 附件的URL 引用(注意:不是文件本身)。

关键点:WXR 不包含主题设置、插件配置、菜单分配、小工具、用户信息(导入时可映射)、站点选项。它纯粹是”内容”。

附件默认只导出 URL,导入时 WordPress 会尝试从原站下载图片。原站下线了就得手工处理。

保姆级实操

第一步:导出全部内容

wp export --dir=/tmp/exports

生成类似 mimangfei.2026-10-10.000.xml 的文件。

第二步:按条件导出(常用)

# 只导出已发布文章
wp export --dir=/tmp/exports --post_type=post --status=publish

# 只导出页面
wp export --dir=/tmp/exports --post_type=page

# 只导出某个自定义文章类型
wp export --dir=/tmp/exports --post_type=product

# 按分类导出(用 term ID)
wp export --dir=/tmp/exports --category=12

# 按时间范围导出
wp export --dir=/tmp/exports --start_date=2025-01-01 --end_date=2025-12-31

# 按作者导出
wp export --dir=/tmp/exports --author=3

第三步:控制附件与内容

# 不导出附件引用,只导正文
wp export --dir=/tmp/exports --skip_comments --max_num_comments=0

# 跳过评论
wp export --dir=/tmp/exports --skip_comments

wp export 没有直接的”不导附件”开关,但导入时可以不勾选下载附件。

第四步:导入

需要先安装官方导入器插件:

wp plugin install wordpress-importer --activate
wp import /tmp/exports/mimangfei.2026-10-10.000.xml --authors=create

--authors 三个取值:

  • create:为新作者创建账号(默认行为);
  • skip:跳过作者不存在的内容;
  • mapping.csv:用 CSV 做作者映射。

作者映射 CSV 格式:

old_login,new_login
zhangsan,editor1
lisi,editor2

第五步:导入后处理

wp rewrite flush
wp cache flush
wp media regenerate --yes      # 若图片已下载但尺寸不对

第六步:手工处理附件

如果原站已下线,导入会报”无法下载附件”。解决方式:

  1. 手工把 wp-content/uploads 整个目录拷贝到新站对应位置;
  2. 再用 wp search-replace 替换正文里的旧域名为新域名;
  3. 用插件(如 Add From Server)把文件扫描进媒体库,或直接写脚本修复 wp_postmeta 的 _wp_attached_file。

常见踩坑与失败案例

  1. 导入超时 / 内存溢出 —— 大文件导入常卡在 PHP 限制。解决办法:调大 memory_limit 与 max_execution_time,或把 XML 按年份拆分后分批导入。
  2. 导入后文章数对不上 —— 常见原因:作者不存在且用了 skip;或分类法在目标站不存在。用 --authors=create 重试。
  3. 案例:迁移后所有图片都显示”附件不存在”。原因是 WXR 只有 URL 引用,而原站在导入前已经关站,图片下载全部失败。最终靠手工拷贝 uploads 目录 + search-replace 解决。
  4. 自定义文章类型导入后前台 404 —— 目标站没有注册该 CPT。要先装对应插件或主题,再导入。
  5. 导入产生重复内容 —— 重复导入同一文件会创建副本。导入前先看已有文章数,或先清空目标内容。
  6. XML 里含非法字符导致解析失败 —— 文章里如果有控制字符,导出的 XML 可能不合法。可用 wp search-replace 先清理,或改用数据库级迁移。

总结

WXR 导出导入适合”只要内容”的迁移场景,优势是干净(不带旧站配置)、可控(可按类型/日期/作者筛选)。它的边界也很清楚:不含设置、不含真实文件、依赖原站可访问。最佳实践是”WXR + uploads 目录手工拷贝 + search-replace 修域名”三件套,比起整站打包,这种方式迁移后的站点更干净,也更容易排查问题。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。