更新到WordPress 4.4后,上述内容的特色图像(响应性)太小

时间:2016-03-27 作者:Samuel Dellicour

在我的主题中,我使用<?php the_post_thumbnail(\'large\'); ?>

其中,“大”尺寸定义为980px。由于css,其宽度响应迅速。在WordPress 4.4升级之前,这一切都很好。

更新后,包括核心响应图像功能(根据屏幕大小加载不同的图像),这些功能图像现在在每页上仅显示为560像素宽,而不是980像素宽。560px对应于中等大小的图像,以及我的函数中定义的content\\u width(它是主列中内容的宽度,用于oEmbed)。

这是此类图像的html源代码:

<img class="attachment-large size-large wp-post-image" 
sizes="(max-width: 560px) 100vw, 560px" 
srcset="http://marionhansel.local/wp-content/uploads/latendresse-224x126.jpg 224w, 
http://marionhansel.local/wp-content/uploads/latendresse-560x315.jpg 560w, 
http://marionhansel.local/wp-content/uploads/latendresse-980x551.jpg 980w, 
http://marionhansel.local/wp-content/uploads/latendresse-476x268.jpg 476w" 
alt="La Tendresse" 
src="http://marionhansel.local/wp-content/uploads/latendresse-980x551.jpg">
如何使特色图像以其“大”宽度大小(980px)显示,同时保持(WordPress)响应功能和content\\u宽度(对于oEmbed)?

我想这和(max-width: 560px) 100vw, 560px 但如何编辑这些值?

现在,我已经禁用了响应图像(使用禁用响应图像插件),图像再次以全宽(980px)显示,由于css,它们是“响应”的,但它们不使用WordPress响应。

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

全球$content_width 是否影响帖子缩略图

让我们检查一下全局$content_width 可能影响的输出the_post_thumbnail( \'large\' ) 并找出相关的函数依赖关系:

the_post_thumbnail()
 \\
  \\__ get_the_post_thumbnail()
       \\    
        \\__ wp_get_attachment_image() 
             \\
              \\__ wp_get_attachment_image_src()
                   \\
                    \\__ image_downsize()
                         \\
                          \\__ image_constrain_size_for_editor()
对于较大的尺寸,我们有专门的partimage_constrain_size_for_editor():

elseif ( $size == \'large\' ) {
    /*
     * We\'re inserting a large size image into the editor. If it\'s a really
     * big image we\'ll scale it down to fit reasonably within the editor
     * itself, and within the theme\'s content width if it\'s known. The user
     * can resize it in the editor if they wish.
     */
    $max_width = intval(get_option(\'large_size_w\'));
    $max_height = intval(get_option(\'large_size_h\'));
    if ( intval($content_width) > 0 ) {
        $max_width = min( intval($content_width), $max_width );
    }
}
这里我们可以看到,最大图像宽度是minimum 大图像大小宽度和全局内容宽度。

这会影响图像的宽度、高度和大小属性。

例如,“大小”属性值来自:

        \\__ wp_get_attachment_image() 
             \\
              \\__ wp_get_attachment_image_src()
               \\
                \\__ wp_calculate_image_sizes()
其中default value is:

// Setup the default \'sizes\' attribute.
$sizes = sprintf( \'(max-width: %1$dpx) 100vw, %1$dpx\', $width );
wp_calculate_image_sizes() 作用这里是$width 是从wp_get_attachment_image_src() 输出,这取决于content width 正如我们前面看到的。

这应该可以解释为什么您会:

(max-width: 560px) 100vw, 560px
560 = min( 560, 1024 ) 成为最大图像宽度。

解决方法之一是通过editor_max_image_size 过滤器:

// Add a filter callback to avoid the content width restriction
add_filter( \'editor_max_image_size\', \'wpse_max_image_size\', 10, 3 );

// Display large thumbnail    
the_post_thumbnail( \'large\' );

// Remove filter callback
remove_filter( \'editor_max_image_size\', \'wpse_max_image_size\', 10 );
我们定义wpse_max_image_size() 回调为(PHP 5.4+):

function wpse_max_image_size( $max_image_size, $size, $context )
{
    // Override content width restriction
    if( \'large\' === $size )
    {
        $max_image_size =  [
            $max_width  = intval( get_option( \'large_size_w\' ) ),
            $max_height = intval( get_option( \'large_size_h\' ) )
        ];
    }
    return $max_image_size;
}
我们从数据库中获取较大的图像尺寸,因为我猜您修改了1024980 通过设置媒体屏幕。

注:另一种选择是使用wp_calculate_image_sizes, 但是,我们仍然需要处理宽度/高度图像属性。

也可以通过wp_get_attachment_image_attributes 滤器

还可以临时修改全局内容宽度,但我在这里避免了这种情况。

相关推荐

Broken images on iphone

我在iPhone上破坏了图像,这只发生在我大约一周前添加新图像的主页上(新图像的格式和大小与旧图像完全相同)这是网站:CartonMaster。伊利诺伊州公司提前感谢,