不带资源集的帖子缩略图?

时间:2016-01-08 作者:jay

WordPress 4.4添加了多种图像大小srcset 使用时the_post_thumbnail 作用如果没有srcset,是否可以只获得一个图像大小?

我知道可以添加一个过滤器来禁用srcset 来自所有图像,但我想禁用srcset 仅当调用特定缩略图大小时(例如,仅当调用完整图像大小时)。

2 个回复
SO网友:birgire

我只想在调用特定缩略图大小时禁用srcset(例如,仅在调用完整图像大小时)。

这里有两个想法(如果我理解正确的话):

接近#1

让我们从post_thumbnail_size 滤器如果它与相应的大小相匹配(例如。full) 然后我们确保$image_meta 为空,带有wp_calculate_image_srcset_meta 滤器这样我们就可以从wp_calculate_image_srcset() 函数(早于使用max_srcset_image_widthwp_calculate_image_srcset 要禁用它的筛选器):

/**
 * Remove the srcset attribute from post thumbnails 
 * that are called with the \'full\' size string: the_post_thumbnail( \'full\' )
 *
 * @link http://wordpress.stackexchange.com/a/214071/26350
 */
 add_filter( \'post_thumbnail_size\', function( $size )
 {
     if( is_string( $size ) && \'full\' === $size )
         add_filter( 
             \'wp_calculate_image_srcset_meta\',  
              \'__return_null_and_remove_current_filter\' 
         );   
    return $size;
 } );

// Would be handy, in this example, to have this as a core function ;-)
function __return_null_and_remove_current_filter ( $var )
{
    remove_filter( current_filter(), __FUNCTION__ );
    return null;
}
如果我们有:

the_post_thumbnail( \'full\' );
然后生成<img> 标记将不包含srcset 属性

对于这种情况:

the_post_thumbnail();
我们可以匹配\'post-thumbnail\' 调整字符串大小。

方法#2

我们还可以通过以下方式手动添加/删除过滤器:

// Add a filter to remove srcset attribute from generated <img> tag
add_filter( \'wp_calculate_image_srcset_meta\', \'__return_null\' );

// Display post thumbnail
the_post_thumbnail();

// Remove that filter again
remove_filter( \'wp_calculate_image_srcset_meta\', \'__return_null\' );

SO网友:Dario Zadro

不需要过滤器。最简单的解决方案如下:

// exclude any attribute you want to keep from the list
// choose any defined image size, ie. large, medium, etc
echo preg_replace( \'/(width|height|srcset|sizes)="[^"]*"/\', \'\', get_the_post_thumbnail( get_the_ID(), \'large\') );