Wordpress:srcset在所有帖子

时间:2016-02-17 15:24:54

标签: wordpress image https srcset

Wordpress 4.4 images get automatically a srcset attribute。我的问题是以下(我在写这个问题时解决了它,请参阅下面的答案):

  • 为了将所有内容传输到https ,我将src="http://...中的所有src="https://...引用替换为src="//...(之后我将其更改为{{1}支持两种协议);
  • 所有帖子上的图片都会在src属性中获得正确的网址;
  • 但是,在获得srcset属性的所有图片中,其中的网址始终包含http://个参考。

为什么会这样?为什么这些网址无法获得我新近更新的https://个帖子?

3 个答案:

答案 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';