为了备份以及测试网站,在本地搭建了一个同样的LNMP环境,在正式WordPress上发布文章之前都先在本地WordPress发布,如果有错误可以直接在本地修改,确保没有问题后再正式上线服务器,也因为网站使用了COS对象储存和CDN,如果在正式服务器上直接发布,如果有问题就还得清理COS对象储存和刷新CDN,很麻烦。一开始也就写几篇文章,确保没有问题后,再在正式服务器上重新写一遍,一开始也没有感觉出什么麻烦,后来有一段时间高产,本地积累了很多文章,不想再去线上服务器重新发布一遍,太累了,就想着能没有迁移文章的方法。一开始想过使用WordPress自带的导出导入工具,但是一看只能按分类或者发布日期和状态这三种条件筛选文章,而我需要精确到某一篇文章,这样就不适合,就没有考虑。后来去问别人,但给的方法是整站迁移,这样感觉是杀鸡用牛刀,杀敌一千自损八百的做法,不考虑。又想到使用导出导入插件,而我使用的是Elementor编写的文章,但是插件导出的文章导入后样式变成了WordPress的区块类型文章,原来的Elementor样式都没有了,而且文章图片只正确显示第一张文章图片,后面的图片全部显示成第一张图片,完全没有办法使用。而且这种插件导入文章的图片是使用源站的图片地址导入到的服务器,这就需要源服务器可以被外网访问,而我们是本地网络很多都没有公网IP,虽然我有公网IP,但是没有80或者443端口,依然无法导入。后来我使用内网穿透工具,这样图片才能被导入到正式服务器,但还是因为样式和图片问题根本没有办法使用。后来又有人说使用什么WordPress表同步,我看了一下,感觉就是两个服务器使用一个数据库,也就没有仔细研究,感觉和我的需求根本不是一回事。后来也想过使用本地数据库替换正式服务器的数据库的方法,但是本地和正式服务器还是有一些差别的,不能直接使用,也就没有深入研究。到最后没有办法了就尝试了一下WordPress自带的导入导出,可以完美迁移文章,样式什么的都没有乱,后来又找到了可以指定要导出的文章的插件,配合这个插件可以精确迁移文章。
导出
我使用的是Select Post Export
插件,这个可以指定要导出的文章。如果没有这么精确的需要可以直接使用WordPress自带的导入导出。
修改配置
Select Post Export
插件相较于WordPress自带的导出相当于多了一个可以自定义文章功能,其实还是使用了WordPress自带的导出功能,也就是说插件的导出与WordPress自带的导出内容是一样的。但是这样的导出却不能导出附件,还是引用的源站地址,而我们源站是本地网络,无法连通。就算你是在两个云服务器上使用,两个站其实是用的一个网站的地址,这样源站就得一直开着,或者源站停服我们就没有办法使用其中的图片了,不算是完整的迁移。这时只需要修改一下导出的文件里的图片引用地址就完美的解决了图片引用的问题。
当然在导入文章之前要提前把相关图片上传到要导入的服务器上的WordPress媒体库,这样修改的引用地址才会生效。
我这里使用了COS对象储存,所以要把图片地址替换成COS对象储存地址。
文章是在9月写的,而我导入到云服务器上的时间是10月份,图片也就是10月份上传的,所以我还需要修改一下目录。如果你的文章是在同一个月内导出与导入,就不用像我这样分两部分修改了,直接替换域名即可。
但经过实际数据测试其实这里也不用修改,因为我在第一次修改后导入时文章图片并没有显示,我通过F12控制台查看显示图片地址还是本地地址。当时我还“晕”了一段时间,为全面查找,我是使用Notepad++的全局查找替换,没有漏掉引用地址,而且就导出一个xml文件,并没有使用默认的浏览器查看,就是防止有什么遗漏,但最终还是有错误。
后来我又缩小了查找范围,只查找本地地址10.10.10.10,在后面查找到了相关内容,而这才是真正的引用地址。然后修改成需要引用地址。
但不是简单的只替换域名,而是文件名也需要修改。比如所有图片我是使用Windows的自动命名的方式进行命名的,比如上传前的图片名称为:WordPress迁移文章 (2).webp
。
但是在上传并使用后却变成了:WordPress迁移文章-2.webp
。
其实在你上传到WordPress媒体库后文件名和引用地址直接就变了。
所以导出的xml文件引用地址也会变。WordPress只是去掉了括号,把原文件名中的空格变成了-
。当然我这里只是针对于我的命名方式进行修改替换,其它命名方式请自行尝试修改替换。
所以我还得修改原文件名再上传以匹配导出的xml文件。
然后再修改一下站点地址和WordPress地址。(这里应该也不用修改,嫌麻烦的可以自行尝试不修改。)
导入
这里没有什么好说的,按需更改吧。导入附件这里我在写这篇教程时没有勾选,因为我在第一次尝试时,勾选导入附件时好像又生成了图片文件的副本。后来我也忘记到底是哪的问题,在后来测试中没有选择勾选导入附件也没有看到什么错误,也就没有再勾选导入附件。
导入后的文章是没有特色图片的,所以需要自己在WordPress里手动添加。相比再重复一次发布文章,这已经不是事了。
导入后的日期、分类目录、ID、标签、评论什么的都会保持原样。而且我本地文章的Elementor是生成的CSS文件,在导入后也会随文章再生成一样的CSS文件,除了没有特色图片,可以说是完全一致,省心不少。