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=”http://...
    src=”中的引用https://...(我后来将其更改为
    src=“/…
    ,以支持这两种协议)
  • 所有帖子上的图片都在
    src
    属性中获得了正确的URL
  • 但是,在所有获得
    srcset
    属性的图像中,其中的URL总是带有
    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功能处理。