网站开了https之后(全站强制https),可能会遇到图片不显示的问题,是因为图片链接都被写成了http,导致浏览器出于安全的原因,不加载图片。
在开了CDN之后,也有可能会遇到这种情况。在CDN的规则里加上了图片不走cdn,走本站流量(神奇吧,因为本站基本没流量!),但还是不行。
网上找了下办法,最为简单的如下,在当前主题下的 functions.php 文件,代码末尾追加以下代码:
/* 替换图片链接为 https */
function https_image_replacer($content){
if( is_ssl() ){
/*已经验证使用 $_SERVER['SERVER_NAME']也可以获取到数据,但是貌似$_SERVER['HTTP_HOST']更好一点*/
$host_name = $_SERVER['HTTP_HOST'];
$http_host_name='http://'.$host_name.'/wp-content/uploads';
$https_host_name='https://'.$host_name.'/wp-content/uploads';
$content = str_replace($http_host_name, $https_host_name, $content);
}
return $content;
}
add_filter('the_content', 'https_image_replacer');
打完收工。