WP_GET_ATTACHING_IMAGE_ATTRIBUTES不工作

时间:2019-01-24 作者:D.JCode

我将所有图像移动到子域。之后,显示一些具有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 类似于上述代码的地址。但这一次是针对帖子页面。

1 个回复
最合适的回答,由SO网友:mrben522 整理而成

我把你的string_replace 使用呼叫preg_replace 并将搜索字符串转换为适当的正则表达式(我使用regex101 为此)。因为您试图替换wordpress保存为字符串的内容中的图像,所以您需要在内容中的任何位置找到图像并替换srcsrcset 为了它。这应该是可行的(尽管如果您有任何带有src 属性,则它也会尝试替换这些属性。您可能会修改该正则表达式以仅匹配srcsrcset 在一个图像标签内,但这比我的正则表达式技能要高级一点。

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\');

相关推荐

Images with overlay

我有一些图片在一个容器中,我想添加一个覆盖和图标。这不是现成的,但我找到了一些有用的代码:HTML:<div class=\"main\"> <span class=\"featured\"><img src=\"http://joshrodg.com/IMG_001-258x258.jpg\" title=\"\" alt=\"\"></span> </div> CSS:.featured {