从Wordpress到Halo,一次成功的迁移
本文最后更新于 2025-06-03,文章内容可能已经过时。
Wordpress拥有着最庞大的用户群体,同时资源、插件也是应有尽有,稳定性也比halo好不少,但是Wordpress的界面属实古老跟不上时代了,于是这个端午节闲着没事干,又整了台Debian的服务器,搭个Halo迁移过来。
所以该如何迁移所有数据到Halo呢?Halo应用市场有上架站点迁移这个应用。

第一步
回到你的Wordpress站点,工具-导出

然后选择文章,亲测选所有内容站点迁移应用会无法下一步控制台报错(bundle.js?t=1748769044931:8
Failed to parse data. error -> TypeError: p.filter is not a function)。

下载你就会得到一份XML文件

第二步
先别急着去导入xml,我们先把媒体数据移过来,找到你Wordpress的上传文件夹/wp-content/upload/整个文件夹复制出来,
然后在 Halo 工作目录下的 attachments 目录中创建与上一步配置的路由规则对应的 migrate-from-wp 子目录。(找不到可以先在Halo上传一张图片,再去找那个图片的路径),把你Wordpress的/wp-content/upload/文件夹丢进/migrate-from-wp里面去。目录就应该是这样的
{halo-work-dir}/attachments
├── migrate-from-wp
│ ├── 2011
│ ├── 2015
│ ├── 2016
│ ├── 2017
│ ├── 2018
│ ├── 2019
│ ├── 2020
│ ├── 2021
│ ├── 2022
│ ├── elementor
│ ├── wpforms
│ └── wp-import-export-lite
└── upload
└── local单单这样文章中还是访问不到图片,需要修改链接规则,在 Halo 配置文件中增加如下配置,通过该配置,用户在 {halo-work-dir}/attachments/migrate-from-wp/ */ 上传文件后,可以通过 {HALO_EXTERNAL_URL}/wp-content/uploads/{文件名} 访问到该文件,与 WordPress 中的附件链接规则一致。同时,修改 Halo 的 HALO_EXTERNAL_URL 配置,与原本的 WordPress 域名保持一致。
halo:
attachment:
resource-mappings:
- pathPattern: /wp-content/uploads/**
locations:
- migrate-from-wp至此媒体导入就完成了
第三步
回到迁移应用,导入xml,一路下一步

最后,文章封面还是需要手动设置
如果你的文章内媒体显示404,发现链接URL不正确,需要批量修改,可以看我另一篇批量修改URL的文章