You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

删除WordPress额外图片尺寸后自动清理无用附件元数据

WordPress 图片尺寸控制与元数据批量清理指南

一、先确认你阻止额外图片生成的代码是否生效

你添加的这段代码逻辑完全没问题!咱们来拆解下它的作用:

  • 通过 intermediate_image_sizes_advanced 过滤器直接移除了WordPress默认的4种中间尺寸(缩略图、中等、中大型、大型)
  • 利用 max_srcset_image_width 设置为1,彻底禁用了自动生成多尺寸srcset的功能

验证生效的方法超简单:

  • 随便上传一张新图片到媒体库
  • 要么去服务器的上传目录(比如 wp-content/uploads/202X/XX)里看,有没有生成带 -100x100-700x700 这类后缀的图片;要么直接看媒体库的图片详情,检查尺寸列表里是不是只剩原图
  • 要是没生成这些额外尺寸,就说明代码已经稳稳生效啦!

二、批量清理已有图片的无用元数据(MySQL语句)

重要提醒!

执行任何数据库操作前,一定要先完整备份你的数据库!万一操作出问题,还能及时恢复,别嫌麻烦哈~

针对指定后缀的批量更新语句

下面的语句会帮你批量处理 wp_postmeta 表中 _wp_attachment_metadata 字段里的内容,精准移除包含 -100x100.jpg-700x700.jpg 的尺寸条目:

-- 移除包含 -100x100.jpg 的元数据条目
UPDATE wp_postmeta
SET meta_value = REGEXP_REPLACE(
    meta_value,
    '"([^"]*-100x100\\.jpg[^"]*)":\\{[^}]*\\},?',
    ''
)
WHERE meta_key = '_wp_attachment_metadata'
AND meta_value LIKE '%-100x100.jpg%';

-- 移除包含 -700x700.jpg 的元数据条目
UPDATE wp_postmeta
SET meta_value = REGEXP_REPLACE(
    meta_value,
    '"([^"]*-700x700\\.jpg[^"]*)":\\{[^}]*\\},?',
    ''
)
WHERE meta_key = '_wp_attachment_metadata'
AND meta_value LIKE '%-700x700.jpg%';

额外说明:

  • 如果你还有其他要移除的后缀(比如 -300x300.jpg),直接复制上面的语句,把后缀替换成对应的就行,非常灵活
  • 这个语句用到了 REGEXP_REPLACE,需要MySQL 8.0及以上版本支持。如果你的MySQL版本较低,要么升级版本,要么就得用更复杂的字符串拼接方式处理(不过还是建议升级,更省心)
  • 执行完后,记得抽查几条记录的 meta_value 内容,确认无用的尺寸已经被删掉了
  • 元数据清理完,别忘了去服务器的上传目录里手动删掉那些带后缀的无用图片文件,彻底释放存储空间

内容的提问来源于stack exchange,提问作者Pimpfru

火山引擎 最新活动