从 WordPress 迁移到无头 CMS 而不丢流量
一份 WXR 导出、一个对不上号的内容模型,以及无法迁移的插件逻辑。逐步的迁移路径——包括什么会出问题。
如果你还在决定要不要迁移,请先读corpusctl vs WordPress——它诚实地论证了:大多数 WordPress 站点都应该继续留在原地。
本文假定决定已经做出。它讲的是如何完成迁移,而不至于一觉醒来发现流量图像岭峡一样垂直下跌。
第 1 步——清点插件到底在做什么
在做任何其他事情之前先做这一步,因为迁移的真正预算就出在这里。
逐一遍历插件列表,把每个插件归入三个桶之一:
| 桶 | 例子 | 能迁移吗? |
|---|---|---|
| 存储内容 | Advanced Custom Fields、自定义文章类型 | 能——它就在导出文件里 |
| 转换内容 | 短代码、页面构建器、相关文章块 | 部分——输出在正文里,逻辑不在 |
| 提供行为 | 表单、预订、会员、电商、缓存 | 不能——重建或替换 |
第三个桶就是那个工程项目。一个表单插件变成一个表单服务。一个会员插件变成你前端里的 auth 加门禁。没人会导出这些,而这正是迁移拖长的原因。
第二个桶有一个特定的陷阱:页面构建器。如果你的文章是用 Elementor、WPBakery 或类似工具构建的,导出的正文就是一堆短代码和包裹标记的汤,而不是干净的 HTML。要么计划去清理它,要么手工重写受影响的页面。现在就把它们数清楚。
第 2 步——导出
Tools → Export → All content 会生成一个 WXR 文件:一份包含文章、页面、自定义文章类型、分类法、评论以及媒体引用的 XML。
是引用,不是文件。图片仍然躺在wp-content/uploads 里,必须单独迁移。
在你信任这个文件之前,有两件事值得检查: