如何过滤每个页面上所有图片的源URL

时间:2021-11-15 作者:GermanKiwi

我想过滤每个图像的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 没有。

我希望有人能给我指出正确的方向!

1 个回复
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请求。

相关推荐

Search with filters

我想在搜索表单中创建三个过滤器,其中包括三个不同的过滤器(标签、类别和帖子)。是否可以创建这些过滤器?如果可能的话,意味着我如何创建它?基本上,我不擅长PHP。所以,请帮我解决这个问题。谢谢