WordPress では画像をアップロードすると、自動的に一定の大きさにリサイズした画像をいくつか自動生成しますが、その生成を停止したりサイズを変更したりする方法です。
大きい画像のリサイズを停止/変更する
WordPress では大きすぎる画像サイズ(2560px
)を超えるサイズの画像をアップロードした場合、画像のサイズがそれ以下になるようリサイズしたものを生成します。
リサイズされた画像は、ファイル名の末尾に-scaled
が付与されます。
リサイズ画像を生成しな い
big_image_size_threshold
でfalse
を返します。
add_filter( 'big_image_size_threshold', '__return_false' );
2560px
以上のサイズとなると相当な大きさになるので、理由がない限りは特に停止する必要も無い気がします。
リサイズ時のサイズを変更する
例として、リサイズ上限を3000px
に変更する場合。
add_filter( 'big_image_size_threshold', function( $threshold ) {
return 3000;
});
全てのリサイズ画像の自動生成を停止する
これはおすすめしませんが、リサイズ画像を一切生成したくない場合は、intermediate_image_sizes_advanced
に空の配列を返します。
add_filter('intermediate_image_sizes_advanced', '__return_empty_array' );
__return_empty_array
は WordPress に定義されている__return_empty_array()
という関数で、空配列を返すだけです。
生成するリサイズ画像の種類を指定する
全てのリサイズ画像を無効にするのではなく、いくつか無効にしたいときはunset()
で$new_sizes
の中身を削除します。
下記の例では、WordPress がデフォルトで生成する画像を全て unset して削除しています。途中からただの数値表記になってるのでわかりにくいです。
add_filter('intermediate_image_sizes_advanced', function( $new_sizes ) {
unset( $new_sizes['thumbnail'] ); // サムネイル
unset( $new_sizes['medium'] ); // 中サイズ
unset( $new_sizes['large'] ); // 大サイズ
unset( $new_sizes['medium_large'] ); // もっと大きいサイズ
unset( $new_sizes['1536x1536'] ); // かなり大きいサイズ
unset( $new_sizes['2048x2048'] ); // とんでもなく大きいサイズ
});
参考
big_image_size_threshold について
https://www.bigapplemedia.com/how-to-stop-wordpress-from-resizing-images
intermediate_image_sizes_advanced について
https://devexus.net/articles/disable-wordpress-automatically-creating-image-sizes/