众所周知,自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 );