这个站以前写 Hexo、Hugo 比较多,WordPress 反而没怎么系统写。现在回头看,很多个人站、工作室站、早期公司官网,最后都会碰到同一个问题:WordPress 用了很多年,文章、图片、评论、分类都在里面,想换 Astro,但又怕一搬就塌。
放到 AI 时代,这件事其实没以前那么痛了。不是说让 AI 一键迁完就万事大吉,而是它很适合干中间那些脏活:读 XML、整理 frontmatter、批量改图片路径、生成重定向表、检查重复标题。以前这些活很容易把人磨没耐心。
但路线还是要自己定。
第一条路:一次性导出,WordPress 退休
这是我最喜欢的路线。
WordPress 后台可以在 Tools -> Export 里导出内容,导出来的是 WXR/XML。里面有文章、页面、评论、自定义字段、分类、标签这些东西。用 WP-CLI 也可以:
wp export --dir=./exports --post_type=post,page --post_status=publish
然后写脚本把 XML 解析出来,转成 src/content/posts/**/index.md。图片另外下载,评论看情况保留成 JSON 或直接归档。
这条路适合个人博客、教程站、作品集、文档站。迁完以后 WordPress 可以关掉,服务器也不用再背 PHP、MySQL、插件更新这些包袱。
缺点也明显:以后写文章要进代码仓库。对习惯 WordPress 后台的人来说,这一下会不舒服。
第二条路:WordPress 继续当后台,Astro 管前台
Astro 官方迁移文档也提到,可以继续用 WordPress 管内容,让 Astro 去 fetch 并展示。WordPress REST API 会把 posts、pages、taxonomies 这些内容以 JSON 形式暴露出来。媒体也有单独的 media endpoint。
大概就是:
const posts = await fetch('https://example.com/wp-json/wp/v2/posts?per_page=100')
.then((res) => res.json());
这条路适合多人编辑的网站。比如编辑还想用 WordPress 后台写文章、传图、改分类,前台只想换成 Astro 的速度和部署方式。
我不太会把它当成个人博客的最终方案。因为 WordPress 还在,插件、安全更新、数据库备份还是要管。但它很适合做过渡。先把前台换掉,等内容都稳定了,再慢慢把文章落成 Markdown。
第三条路:只迁静态内容,动态功能砍掉
很多 WordPress 站时间久了,插件一堆:评论、表单、相册、短代码、SEO 插件、相关文章、目录、缓存、统计。迁移时最容易犯的错,就是想把这些东西一比一搬过去。
我现在更倾向于先砍。
评论可以先静态归档,真的有人评论再接 Giscus 或别的服务。表单可以用第三方。短代码先转成普通 HTML。相关文章先不做。目录可以后面再补。
迁移第一版只要做到:文章能看,旧链接不死,图片尽量正常,RSS 和 sitemap 正常。
别一上来把 WordPress 的插件宇宙搬进 Astro。那样迁完只是换了一个更难维护的 WordPress。
AI 在这里适合干什么
我会让 AI 做这些:
- 看 WXR/XML 字段,帮我写解析脚本。
- 把 WordPress block HTML 转成更干净的 Markdown 或 MDX。
- 根据旧 URL 和新
path生成 redirects。 - 找出 404 图片、空 alt、重复 slug。
- 批量生成 excerpt 初稿。
- 检查文章里的旧域名、旧图床、旧短代码。
但我不会让 AI 直接决定这些:
- URL 是否改变。
- 哪些旧文章要删。
- 哪些评论要保留。
- 分类和标签怎么合并。
- canonical 和 sitemap 规则。
这些都是站点自己的历史。AI 不知道哪篇文章曾经带来搜索流量,也不知道哪个旧链接在别人文章里被引用过。
我会怎么选
如果是个人博客,我会选“一次性导出成 Markdown”。麻烦一次,后面省心。
如果是公司内容站,编辑还在用 WordPress,我会先做 headless。前台换成 Astro,后台保留 WordPress。等团队习惯了 Git 或别的 CMS,再考虑真正搬走。
如果是 WooCommerce、会员站、课程站,那就别冲动。Astro 能做前台,但订单、支付、会员、库存这些不是简单迁文章。先分清楚哪些是内容,哪些是业务。
WordPress 到 Astro 的迁移,不是证明哪个框架更高级。对我来说,它更像一次清账:哪些内容值得留下,哪些插件只是历史包袱,哪些 URL 绝对不能断。
AI 可以把搬家速度提上来,但钥匙还是得自己拿着。
参考: