WP 4.4。响应式图像浏览器选择“错误”的


9

我很高兴WP 4.4。带有内置的响应式图像功能。但是我对此并不满意。

我在我的相机中设置了一些自定义图像尺寸functions.php

add_image_size('缩略图',600,600,true);
add_image_size('news-large',1024,false);
add_image_size('news-small',500,false);
add_image_size('3-col',500,375,true);
add_image_size('presscutting',600,850,true);
add_image_size('medium-large',768,false); //今天刚刚添加,用于设备支持
add_image_size('full-feature-image',2000,false);
add_image_size('gallery-image',800,600,true);

如我所知,未裁剪的图像(将裁剪设置为false)被添加到srcset。图像在前端输出,例如(添加了换行符以提高可读性):

<img width =“ 2000” height =“ 1335”
src =“ http://mywebsite.com/cms/wp-content/uploads/2015/03/image-2000x1335.jpg” 
class =“ attachment-full-feature-image size-full-feature-image”
alt =“ asdf”
srcset =“
http://mywebsite.com/cms/wp-content/uploads/2015/03/image-300x200.jpg 300w, 
http://mywebsite.com/cms/wp-content/uploads/2015/03/image-768x513.jpg 768w, 
http://mywebsite.com/cms/wp-content/uploads/2015/03/image-1024x683.jpg 1024w, 
http://mywebsite.com/cms/wp-content/uploads/2015/03/image-500x334.jpg 500w“ 
Size =“(最大宽度:2000px)100vw,2000px”>

但是现在我的问题是:尽管屏幕分辨率为1600px,但在屏幕上仅显示指定宽度为1024px的图像。因此,所有图像看起来都很模糊。

如何使WP和/或浏览器使用2kpx图像代替? 我是否需要为1280px,1440px,1600px,1968px添加新的图像尺寸?还是有一种更简单的方法来告诉WP /浏览器使用较大的图像,而不是显示模糊且太小的版本?


您能以正确的使用方式尝试一下add_image_size吗?您总是将width参数设置为false-这应该是整数(第三个参数)。
fischi 2015年

好的,这样做并添加了9999的高度值。调整了缩略图的大小。徒劳无功。
rob_st 2015年

在默认max_srcset_image_width过滤器是1600
birgire

很高兴知道@birgire-但这并没有太大帮助。我如何更改它(似乎还没有文档)-更改是否可以解决我的问题?
rob_st 2015年

Answers:


9

关于文档,Make Blog上有此博客文章:

WordPress 4.4中的响应式图像

要增加注释中提到的1600px限制,请尝试以下操作:

add_filter('max_srcset_image_width', function($max_srcset_image_width, $size_array){
    return 2000;
}, 10, 2);

最后,如前所述,您应该将呼叫固定为 add_image_size

add_image_size('news-large',1024,false);

需要是

add_image_size('news-large', 1024, 0, false);

谢谢。我将高度设置为9999-有什么区别吗?我会尝试一下。
rob_st

谢谢,让它正常工作。虽然它基本上是相同的答案这一块,实际上我更喜欢命名的功能-我接受你的,因为你是第一次:-)
rob_st

我认为这可能是我需要的答案,但我不知道$size_array应该具有什么价值。
Telarian

1

我通过使用srcset可以添加到您的过滤器函数的额外大小解决了相同的问题functions.php

function filter_max_srcset( $max_width, $size_array ) {
    if ( $size_array[0] === 1800 ) {
        $max_width = 1800;
    }
    return $max_width;
}
add_filter( 'max_srcset_image_width', 'filter_max_srcset', 10, 2 );
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.