时间:2026年11月14日
应用:WordPress
主机:中柏
bug是否消失:是
bug是否彻底解决:是
bug严重等级:黄色
前言
最近整理网站时,发现部分旧文章在WordPress后台编辑器中出现了大量图片破损图标。奇怪的是,打开网站前台查看,图片却能正常显示。
其中一篇文章有近 90 张图片,重新上传显然不是一个好办法。于是开始检查图片地址和数据库,看看问题究竟出在哪里。
问题描述
打开旧文章的编辑器,发现部分图片无法正常加载。
检查图片HTML后,发现图片的src属性仍然指向迁移前的旧容器地址,路径中还保留着原来的上传目录。
因为网站已经更换了访问域名,所以这些旧图片在编辑器中无法正常显示。
排查过程
检查图片引用地址
打开浏览器开发者工具,在 Console 中执行以下代码,查看编辑器内图片的实际引用地址:
[...document.querySelectorAll('.block-editor-block-list__block img')]
.map(i => i.getAttribute('src'))
.filter(Boolean)
.slice(0, 20)检查后发现,图片地址存在新旧混用的情况,部分图片仍然指向旧容器地址。
使用 Better Search Replace 替换旧地址
确认问题后,使用 Better Search Replace 插件进行数据库搜索替换。
查找内容:旧容器地址及对应的图片上传目录。
替换内容:当前网站域名及对应的图片上传目录。
先执行Dry Run试运行,查看匹配结果,再进行正式替换。
替换完成后,原先在编辑器中无法显示的图片恢复正常。
发现未启用的小工具仍保留旧图片
原以为问题已经处理完毕,后来再次检查数据库,发现 wp_options 表中仍然存在旧容器地址。
进一步查询发现,widget_block 这个选项中有 46 处旧地址。
随后进入 WordPress 后台,打开「外观 → 小工具」,发现以前使用过的一组小工具已经处于未启用状态,但里面仍然保存着旧图片。
将这组废弃的小工具内容删除并更新后,相关旧地址也随之减少。
这部分内容之前一直没有注意到,直到查询数据库才发现它们还保留着。
清理隐私政策草稿中的旧地址
继续检查数据库中的 wp_postmeta 表,发现还有一条记录包含旧容器地址。
对应的字段是 _wp_suggested_privacy_policy_content,关联的是一个处于草稿状态的页面。
检查后确认这是以前遗留的隐私政策草稿,其中保存着旧站点地址。
由于该草稿已经没有保留必要,所以经过确认后将它彻底删除。
再次查询,wp_postmeta 表已经找不到旧地址。
验证结果
最后通过 MySQL 对三张数据表进行统一检查,统计旧容器地址的残留记录:
其中:
wp_posts:文章和页面正文中已无旧地址。wp_postmeta:附加数据中已无旧地址。wp_options:还剩两条Better Search Replace相关记录,分别为_transient_bsr_results和bsr_data。
推测为Better Search Replace插件缓存,暂时保留,以免影响插件数据。
本bug由 ChatGPT 协助排查
评论