删除Wordpress图像中srcset的某些大小



众所周知,自Wordpress 4.4以来,就有响应图像大小。我的目标是从生成中删除2个尺寸,甚至从图像的srcset中删除。由于某种原因,即使使用了以下代码,srcset中仍显示2个尺寸!有什么解决方案吗?:(

add_action( 'init', 'j0e_remove_large_image_sizes' );
function j0e_remove_large_image_sizes() {
remove_image_size( '1536x1536' );             // 2 x Medium Large (1536 x 1536)
remove_image_size( '2048x2048' );             // 2 x Large (2048 x 2048)
}
function remove_default_image_sizes( $sizes) {
unset( $sizes['1536×1536']);
unset( $sizes['2048×2048']);
return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'remove_default_image_sizes');

在wp-includs/media.php中挂入wp_calculate_image_srcset:1061-1180;请阅读详细说明
$sources是一个数组,用于保存srcset属性的所有可用大小。您可以取消设置不需要的大小,如下所示。

add_filter( 'wp_calculate_image_srcset', 'my_custom_image_srcset', 10, 5);
function my_custom_image_srcset($sources, $size_array, $image_src, $image_meta, $attachment_id) {
$remove = ['1536', '2048'];
$sources = array_diff_key($sources, array_flip($remove));
//check result with print_r
//print_r($sources);
return $sources;
}

intermediate_image_sizes_advanced可以工作,但看起来您在那里设置了错误的键。×是错误的字符。

以下操作应该很好:

add_filter( 'intermediate_image_sizes_advanced', function( $new_sizes, $image_meta, $attachment_id ) {
unset( $new_sizes['1536x1536'] );
unset( $new_sizes['2048x2048'] );
return $new_sizes;
}, 10, 3 );

最新更新