时间: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

0

wp_postmeta

0

wp_options

2

其中:

  • wp_posts:文章和页面正文中已无旧地址。

  • wp_postmeta:附加数据中已无旧地址。

  • wp_options:还剩两条Better Search Replace相关记录,分别为 _transient_bsr_results 和 bsr_data。

推测为Better Search Replace插件缓存,暂时保留,以免影响插件数据。

本bug由 ChatGPT 协助排查