装了一个图片压缩插件,前台所有图变成裂图,媒体库却正常。主题里 wp_get_attachment_image_src 返回 false,关掉插件立刻恢复。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,插件在 wp_get_attachment_image_src 上挂了过滤器,把返回值换成自己的 CDN 结构,主题按数组下标取 width 和 height 时拿到 null。两边对返回结构的约定不一致。

「图片压缩插件冲突」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。

add_filter('wp_get_attachment_image_src', function ($img) {
    return is_array($img) ? $img : false;
}, 99);
// 输出交给 wp_get_attachment_image

权限不要一口气开到最大,先加到够用再往上试,范围小才好收。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

具体做法是,先在主题里判断返回值是不是数组 再取下标;用 wp_get_attachment_image 输出完整 img 少自己拼数组;给插件的过滤器设更低优先级 保证主题拿到标准结构。

最后用这个标准收尾,开启压缩插件后前台图片正常显示,主题不再因为 false 报 warning。

作者 9823189