本文介绍如何在 wordpress 主页等非文章页面中,将 webp 格式的特色图像(featured image)自动替换为 jpg 路径,解决 `the_content` 过滤器无法作用于 `wp_get_attachment_image_src` 返回值的问题。
WordPress 默认使用 WebP 图片可提升加载性能,但在部分老旧浏览器或 CDN 配置下,WebP 可能不被兼容。你已成功通过 the_content 过滤器在文章正文内批量替换 .webp 为 .jpg,但该方法对 get_the_post_thumbnail()、wp_get_attachment_image_src() 等直接调用附件元数据的函数无效——因为这些函数返回的是原始 URL 字符串,不经过 the_content 流程。
要精准拦截并修改特色图像的 src 地址,应使用更底层的钩子:wp_get_attachment_image_src。该过滤器在 WordPress 内部生成缩略图 URL 后、返回给模板前触发,接收一个包含 [url, width, height] 的三元素数组,其中 url 是关键字段(索引为 0),可安全替换扩展名。
✅ 正确做法如下:
⚠️ 注意事项:
断,例如:if (is_home() && $image[1] >= 750 && $image[2] >= 422) {
$image[0] = str_replace('.webp', '.jpg', $image[0]);
}? 补充建议:若你使用 the_post_thumbnail() 模板标签,它内部也调用 wp_get_attachment_image_src(),因此上述过滤器同样生效,无需修改主题中 标签的硬编码逻辑——保持你当前的 wp_get_attachment_image_src() 调用方式即可,无需手动拼接 URL。
最终,你的首页缩略图将自动输出 .jpg 路径,兼顾兼容性与维护性。