在Wordpress 4.4 images get automatically a srcset
attribute。我的问题是以下(我在写这个问题时解决了它,请参阅下面的答案):
src="http://...
中的所有src="https://...
引用替换为src="//...
(之后我将其更改为{{1}支持两种协议); src
属性中获得正确的网址; srcset
属性的所有图片中,其中的网址始终包含http://
个参考。为什么会这样?为什么这些网址无法获得我新近更新的https://
个帖子?
答案 0 :(得分:3)
在wp-includes
文件夹中搜索一段时间后,wp_calculate_image_srcset
文件中的media.php
方法使用以下两行:
$image_baseurl = _wp_upload_dir_baseurl();
$image_baseurl = trailingslashit( $image_baseurl ) . $dirname;
此$image_baseurl
实际上会形成srcset
属性的新网址,即即使整个网址位于wp_posts
表格中并在src
属性中使用,它的开头不会被使用。
这意味着如果wp_options
表格中的基本网址仍在http://
中,则图片将获得该协议,并且在https导航时默认情况下不会显示。< / p>
要解决这个问题,您只需要将option_value
表格中的wp_options
内的网址更改为https://
或仅//
,如果您仍想支持这两种协议(double slashed)。您可以在一个查询中执行此操作:
UPDATE `wp_options`
SET `option_value` = replace(option_value, 'http://', '//')
WHERE `option_name` IN ('siteurl', 'home')
答案 1 :(得分:2)
在设置 - &gt;常规:
下更改管理员中的以下设置WordPress地址(网址):https://yoursitename.com 网站地址(网址):https://yoursitename.com
然后按[保存更改]按钮。最后刷新页面,您的图像将以正确的srcset属性显示在浏览器上。
答案 2 :(得分:1)
如果您不想将WordPress地址(URL)更改为https,则只需将此代码放在活动主题functions.php文件中
function codextent_ssl_srcset( $sources ) {
foreach ( $sources as &$source ) {
$source['url'] = set_url_scheme( $source['url'], 'https' );
}
return $sources;
}
add_filter( 'wp_calculate_image_srcset', 'codextent_ssl_srcset' );
**还将其添加到wp-config.php文件的顶行。
$_SERVER['HTTPS'] = 'on';