I’ve replaced your string_replace
call with preg_replace
and converted your search string to proper regex (I use regex101 for that). Because you’re trying to replace images in the content, which wordpress saves as a string, you need to find anywhere in the content with an image and replace the src
and srcset
for it. This should work (although if you have any script tags with a src
attribute in it then it would attempt to replace those as well. You could probably modify that regex to only match src
and srcset
within an image tag but that’s a bit more advanced than my regex skills will take us.
function alter_image_src_in_content($content)
{
$content = preg_replace('~(?:(?:srcset="https://wordpress.stackexchange.com/questions/326569/)"(?:src="https://wordpress.stackexchange.com/questions/326569/)"(?:, ))(https:\/\/www\.example\.com\/wp-content\/uploads\/)~', 'https://sub.example.com/', $content);
return $content;
}
add_filter('the_content', 'alter_image_src_in_content');