3

Wordpress 4.4 中,图像会自动获得一个srcset属性。我的问题如下(我在写这个问题时解决了这个问题,请参阅下面的答案):

  • 为了将所有内容传输到 https,我将帖子表src="http://...中的所有引用替换为(我后来将其更改为支持两种协议);src="https://...src="//...
  • 所有帖子上的图像在src属性中都获得了正确的 URL;
  • 但是,在所有获取该srcset属性的图像中,其中的 URL 始终带有http://引用。

为什么会这样?为什么这些 URL 没有得到我新更新的https://开头?

4

3 回答 3

4

wp-includes在文件夹中搜索了一会儿,文件中的wp_calculate_image_srcset方法media.php使用了这2行:

$image_baseurl = _wp_upload_dir_baseurl();
$image_baseurl = trailingslashit( $image_baseurl ) . $dirname;

$image_baseurl实际上将形成srcset属性的新 URL,即即使整个 URL 在wp_posts表中并在src属性中使用,它的开头也不会被使用。

这意味着,如果您在wp_options表格中的基本 url 仍在 中http://,则图像将获得该协议,并且在 https 中导航时默认情况下不会被您的浏览器显示。

为了解决这个问题,您只需option_valuewp_options表中的 URL 更改为https://或仅//在您仍想支持这两种协议时(双斜线)。您可以在单个查询中执行此操作:

UPDATE `wp_options`
 SET `option_value` = replace(option_value, 'http://', '//')
 WHERE `option_name` IN ('siteurl', 'home')
于 2016-02-17T15:33:34.980 回答
3

如果您不想将 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';
于 2020-02-19T08:52:42.280 回答
3

Change Following Setting in admin under Setting->General:

WordPress Address (URL) : https://yoursitename.com Site Address (URL) : https://yoursitename.com

And press [Save Changes] button. Finally refresh your page and your image will be displayed on your browser with correct srcset attribute.

于 2018-03-29T03:55:30.717 回答