我只想在调用特定缩略图大小时禁用srcset(例如,仅在调用完整图像大小时)。
这里有两个想法(如果我理解正确的话):
接近#1
让我们从
post_thumbnail_size
滤器如果它与相应的大小相匹配(例如。
full
) 然后我们确保
$image_meta
为空,带有
wp_calculate_image_srcset_meta
滤器这样我们就可以从
wp_calculate_image_srcset()
函数(早于使用
max_srcset_image_width
或
wp_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\' );