WordPress.com跨博客迁移媒体URL子目录变更致链接失效问题求助
解决WordPress.com媒体导入后目录错位的问题
我之前也碰到过一模一样的坑!WordPress.com的导入工具默认是按媒体的发布时间(而不是上传时间)来归档到年月目录的,这就导致那些上传时间和关联文章发布时间不一致的媒体,被丢到错误的月份文件夹里,直接炸掉所有内链。下面是我亲测有效的解决方法:
方法一:修改导出的XML文件(最直接)
既然你已经确认导出的XML里有原文件的位置信息,我们可以手动调整媒体项的时间标记,让导入工具按上传时间归档:
- 用文本编辑器(比如VS Code、Sublime)打开导出的XML文件
- 找到所有媒体附件的
<item>节点(可以通过<wp:post_type>attachment</wp:post_type>快速定位) - 把这些附件节点里的
<wp:post_date>和<wp:post_date_gmt>,改成对应原上传时间的日期(比如原目录是2014/02,就改成2014-02-xx xx:xx:xx格式,具体日期可以从原附件URL或原博客媒体库信息里获取) - 保存修改后的XML,再重新导入到目标博客
方法二:导入后批量修复链接(如果已经完成导入)
要是你已经导入完不想重来,可以用数据库批量替换的方法快速修复失效链接:
- 登录目标博客的数据库管理工具(比如phpMyAdmin)
- 找到
wp_posts和wp_postmeta表(前缀可能根据你的博客设置有所不同) - 执行SQL替换命令,把错误的目录路径替换成正确的:
注意:替换前一定要备份数据库!并且要根据你的实际错误路径调整年份和月份。UPDATE wp_posts SET post_content = REPLACE(post_content, '2014/03/', '2014/02/'); UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, '2014/03/', '2014/02/');
方法三:用插件辅助(适合批量处理大量媒体)
如果你的媒体文件数量很多,手动改XML太麻烦,可以试试WordPress的批量管理插件:
- 先正常导入所有内容到目标博客
- 安装并激活Media Library Folders这类插件(WordPress.com支持的前提下),它可以让你手动把媒体文件移动到正确的年月目录
- 再用Better Search Replace插件批量替换文章里的错误链接,把所有
2014/03/替换成2014/02/
提醒一下:不管用哪种方法,操作前都要备份好原博客和目标博客的内容,避免数据丢失!
内容的提问来源于stack exchange,提问作者askolotl




