我将所有图像移动到子域。之后,显示一些具有srcset
. 对于主页,我使用以下代码解决了问题
function alter_image_src($attr)
{
$attr[\'srcset\'] = str_replace(\'https://www.example.com/wp-content/uploads/\', \'https://sub.example.com/\', $attr[\'srcset\']);
return $attr;
}
add_filter(\'wp_get_attachment_image_attributes\', \'alter_image_src\');
但现在它确实适用于张贴页面上的图像。图像以这种方式显示
<p>
<img class=" size-medium wp-image-467 alignleft" src="https://sub.example.com/2015/08/Zoom.From_.Sky_small-2.png" alt="Zoom.From.Sky_small" width="300" height="160" srcset="https://www.example.com/wp-content/uploads/2015/08/Zoom.From_.Sky_small-2.png 310w, https://www.example.com/wp-content/uploads/2015/08/Zoom.From_.Sky_small-2-100x53.png 100w" sizes="(max-width: 300px) 100vw, 300px">
</p>
我怎样才能改变一切
srcset
类似于上述代码的地址。但这一次是针对帖子页面。
最合适的回答,由SO网友:mrben522 整理而成
我把你的string_replace
使用呼叫preg_replace
并将搜索字符串转换为适当的正则表达式(我使用regex101 为此)。因为您试图替换wordpress保存为字符串的内容中的图像,所以您需要在内容中的任何位置找到图像并替换src
和srcset
为了它。这应该是可行的(尽管如果您有任何带有src
属性,则它也会尝试替换这些属性。您可能会修改该正则表达式以仅匹配src
和srcset
在一个图像标签内,但这比我的正则表达式技能要高级一点。
function alter_image_src_in_content($content)
{
$content = preg_replace(\'~(?:(?:srcset=")|(?:src=")|(?:, ))(https:\\/\\/www\\.example\\.com\\/wp-content\\/uploads\\/)~\', \'https://sub.example.com/\', $content);
return $content;
}
add_filter(\'the_content\', \'alter_image_src_in_content\');