Wordpress 在所有帖子中,srcset获取HTTP而不是HTTPS
在。我的问题如下(我在写这个问题时解决了这个问题,请参见下面的答案):Wordpress 在所有帖子中,srcset获取HTTP而不是HTTPS,wordpress,image,https,srcset,Wordpress,Image,Https,Srcset,在。我的问题如下(我在写这个问题时解决了这个问题,请参见下面的答案): 为了将所有内容传输到https,我替换了所有src=”http://...src=”中的引用https://...(我后来将其更改为src=“/…,以支持这两种协议) 所有帖子上的图片都在src属性中获得了正确的URL 但是,在所有获得srcset属性的图像中,其中的URL总是带有http://引用 为什么会发生这种情况?为什么这些URL没有得到我最新更新的https://开头?在wp includes文件夹中搜索一段时
- 为了将所有内容传输到https,我替换了所有
src=”中的引用https://...(我后来将其更改为src=”http://...
,以支持这两种协议)src=“/…
- 所有帖子上的图片都在
属性中获得了正确的URLsrc
- 但是,在所有获得
属性的图像中,其中的URL总是带有srcset
引用http://
为什么会发生这种情况?为什么这些URL没有得到我最新更新的
https://
开头?在wp includes
文件夹中搜索一段时间后,media.php
文件中的wp\u calculate\u image\u srcset
方法使用以下两行:
$image_baseurl = _wp_upload_dir_baseurl();
$image_baseurl = trailingslashit( $image_baseurl ) . $dirname;
这个$image\u baseurl
实际上将形成srcset
属性的新URL,也就是说,即使整个URL位于wp\u posts
表中并在src
属性中使用,也不会使用它的开头
这意味着,如果wp\u options
表中的基本url仍在http://
中,则图像将获得该协议,并且在https中导航时默认情况下不会显示在浏览器中
要解决此问题,只需将wp\u options
表中选项\u值
内的URL更改为https://
,或者如果仍要支持这两个协议(),只需/
。您可以在一个查询中完成此操作:
UPDATE `wp_options`
SET `option_value` = replace(option_value, 'http://', '//')
WHERE `option_name` IN ('siteurl', 'home')
在“设置->常规”下的“管理”中更改以下设置: WordPress地址(URL): 网站地址(URL):
然后按[Save Changes]按钮。最后刷新页面,您的图像将以正确的srcset属性显示在浏览器上。如果您不想将WordPress地址(URL)更改为https,则只需将此代码放入活动的themes 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';
不幸的是,查询导致Wordpress无法设置其Cookie,因此wp admin中断:(它尝试将它们设置在路径//host.name/@alamar上,如果可以的话,这是一个建议:一旦您将所有内容传输到https,并且您确定您的公共页面显示了所有图像,您将不再需要
/
。此时,您可以在替换字符串为`https://')的位置运行相同的更新。我不再需要它了。)为了支持这两个方案,当时这至少对我有效,但我相信可能会发生一些副作用…我并没有故意将这个答案标记为接受,所以如果你知道如何解决这两个问题,我很乐意阅读。我有一个类似的问题,你能帮我吗?这是对我来说最小的侵入性解决方案,因为我是u使用lightsale bitnami部署,域名全部由bitnomi功能处理。