我想过滤每个图像的src URL(每个img
标记),目标是在图像URL的末尾添加一个查询字符串。(原因不在我的问题范围之内)。
我的理解是,我应该能够使用wp_get_attachment_image_src 筛选以实现此目标。
我找到了这个示例过滤器,它应该可以做到这一点:
function change_src($image, $attachment_id, $size, $icon)
{
$image[0] .= \'?ver=123\';
return $image;
}
add_filter(\'wp_get_attachment_image_src\', \'change_src\', 10, 4);
还有另一个功能
Change Image URL to a CDN 这也应该实现这一点。
然而,当我在我的站点上测试这两个功能中的任何一个时,它只会更改src
我的每个页面的特色图片的URL。它不会更改我页面上任何其他图像的URL。其他图像都是使用编辑器中的“添加媒体”按钮添加的,我的假设是所有图像都应该受到此过滤器的影响。
我的问题是:
是否预期wp_get_attachment_image_src
过滤器仅影响页面的特色图像,而不影响通过“添加媒体”按钮添加的页面内容中的图像?
如果是not 预期的行为,那么是什么导致此过滤器无法在我的网站上的其他图像上工作?
如果is 预期的行为,那么你能建议一个对我的所有图像都有效的替代功能吗?请注意,我更喜欢使用适当的WordPress过滤器来实现这一点,而不是对页面内容进行某种搜索和替换。
此外,我知道我需要使用wp_calculate_image_srcset
筛选器以更改srcset
img标签的一部分。我已经使用Change Image URL to a CDN 这在我页面上的所有图像上都能正常工作。所以我更困惑的是wp_calculate_image_srcset
适用于我的所有图像,但是wp_get_attachment_image_src
没有。
我希望有人能给我指出正确的方向!
SO网友:Tom J Nowell
wp\\u get\\u attachment\\u image\\u src过滤器是否只影响页面的特色图像,而不影响通过添加媒体按钮添加的页面内容中的图像?
是的,保存帖子后,该过滤器不会在图像URL上运行
如果这不是预期的行为,那么是什么导致此过滤器无法在我的网站上的其他图像上工作?
这是预期的行为,此筛选器和其他筛选器不会在数据库中保存有URL的内容上运行。它只影响在运行时需要将附件ID转换为URL的位置
如果这是预期的行为,那么您能否建议一个可用于我所有图像的替代功能?请注意,我更喜欢使用适当的WordPress过滤器来实现这一点,而不是对页面内容进行某种搜索和替换。
不存在这样的过滤器,您需要对页面内容进行某种搜索和替换。请注意,这将要求您刷新所有缓存,如果您的目标是缓存胸围图像,那么这将与许多缓存插件和CDN缓存系统(如Cloudflare)不兼容。给他们提供新的URL会更容易。
此外,您还需要调整许多过滤器并使用各种输出缓冲区。E、 g.您可能认为使用the_content
过滤器或输出缓冲区,但这不会修复某些JS将使用的REST API请求。