如何在WP 4.4中禁用响应图像?

时间:2015-12-10 作者:brokkr

我成功地将我的4.3.1安装转换为所有https。更新至4.4后。我对新的有问题srcset 属性而src 使用https设置图像的属性srcset 属性为http。这会导致浏览器根本不显示任何图像。

在等待更好的修复时,我希望禁用设置srcset 属性,以便所有图像只有src 属性我该怎么做?

5 个回复
最合适的回答,由SO网友:birgire 整理而成

以下是您可以尝试删除4.4中的响应图像支持的几件事:

/**
 * Disable responsive image support (test!)
 */

// Clean the up the image from wp_get_attachment_image()
add_filter( \'wp_get_attachment_image_attributes\', function( $attr )
{
    if( isset( $attr[\'sizes\'] ) )
        unset( $attr[\'sizes\'] );

    if( isset( $attr[\'srcset\'] ) )
        unset( $attr[\'srcset\'] );

    return $attr;

 }, PHP_INT_MAX );

// Override the calculated image sizes
add_filter( \'wp_calculate_image_sizes\', \'__return_empty_array\',  PHP_INT_MAX );

// Override the calculated image sources
add_filter( \'wp_calculate_image_srcset\', \'__return_empty_array\', PHP_INT_MAX );

// Remove the reponsive stuff from the content
remove_filter( \'the_content\', \'wp_make_content_images_responsive\' );
但正如@cybmeta所提到的,问题可能在其他地方。

强制打开httpssrcset

您可以使用wp_calculate_image_srcset 过滤甚至尝试此快速修复:

add_filter( \'wp_calculate_image_srcset\', function( $sources )
{
    foreach( $sources as &$source )
    {
        if( isset( $source[\'url\'] ) )
            $source[\'url\'] = set_url_scheme( $source[\'url\'], \'https\' );
    }
    return $sources;

}, PHP_INT_MAX );
将url方案设置为https. 另一种方法是让它无计划//.

查看法典中的其他内容set_url_scheme() 选项:

$source[\'url\'] = set_url_scheme( $source[\'url\'], null );        
$source[\'url\'] = set_url_scheme( $source[\'url\'], \'relative\' );
但你应该试着深入挖掘,找出根本原因。

更新:我们可以从wp_calculate_image_srcset() 具有以下功能:

add_filter( \'wp_calculate_image_srcset_meta\', \'__return_empty_array\' );
然后使用wp_calculate_image_srcsetmax_srcset_image_width 过滤器。

也根据票证更新#41895, 返回空数组而不是false/null。

SO网友:Trevor

最简单、最干净的方法就是:

add_filter( \'wp_calculate_image_srcset\', \'__return_false\' );
不过,为了回应大多数其他人所说的,srcset是一个好主意,也是未来(现在的最佳实践),但是如果您需要快速修复以保持站点正常工作,那么上面的代码片段可以在没有任何黑客攻击的情况下完成这项工作。

资料来源:WP Core Blog

SO网友:joemcgill

最有可能的原因是srcset 属性错误地显示HTTPS是因为所有图像的URL都是使用wp\\U选项表中siteurl选项的值构建的。如果您通过HTTPS为前端提供服务,还应该更改这些值(通过设置>常规)。

以下是WordPress问题跟踪系统上的相关票据:https://core.trac.wordpress.org/ticket/34945

SO网友:Otto

这将通过消除任何宽度超过1像素的图像来禁用srcset代码。

add_filter( \'max_srcset_image_width\', create_function( \'\', \'return 1;\' ) );
从长远来看,您应该尝试解决实际问题。不过,如果您需要快速修复,这仍然有效。

SO网友:user2969141

在设置/常规中,确保您的WordPress地址(URL)和网站地址(URL)设置为https://yourdomain.com

看见http://wptavern.com/how-to-fix-images-not-loading-in-wordpress-4-4-while-using-ssl

乔·麦吉尔(JoeMcGill)帮助将响应性图像导入WordPress,他也在论坛帖子中做出了回应,并确认克里的建议是正确的,“如果你在前端运行HTTPS,你应该在设置>常规中更改主页和网站URL的URL,以便他们使用HTTPS方案,”他说。

相关推荐

多站点:将主站点的URL更改为HTTPS

我已经在新安装的WordPress上设置了多站点。然后我创建了一些其他网站,所以,最后,我有了这样的东西http://example.comhttp://site1.example.comhttp://site2.example.comhttp://site3.example.com然后我安装了SSL数字证书,因此我更改了网站的URL以匹配HTTPS方案:http://example.com更改我转到的方案Sites > All Sites, 然后单击每个站点,在选项卡“信息”(第一个)中,我只需更