remove_image_size()

登録済みの画像サイズを削除する

remove_image_size() は、登録されている画像サイズを、名前を指定して削除することができる関数です。

テーマ・プラグインが追加した不要なサイズや、1536×1536・2048×2048といったコアの追加サイズを個別に止めたいときに使います。

構文とパラメーター

【構文】

PHP
remove_image_size( $name )

【返り値】bool(true | false) 画像サイズが正常に削除されれば true、失敗したら false。

パラメーター

$namestring必須
削除する画像サイズの登録名。add_image_size()で登録したときの名前と同じものを指定します。

予約済みの画像サイズ名には基本的に使えない

remove_image_size()は、内部で$_wp_additional_image_sizesというグローバル変数に登録されているサイズだけを削除します。

予約済みの画像サイズ名にはこの機能を使用できません。

予約済みの画像サイズ名
「thumb」、「thumbnail」、「medium」、「medium_large」、「large」、「post-thumbnail」

このうちthumbnail・medium・medium_large・largeの4つは、$_wp_additional_image_sizesではなく管理画面の設定([設定>メディア]のオプション)で管理されているため、remove_image_size('medium')のように指定しても削除されません。

これらのサイズを止めたい場合は、[設定>メディア]の管理画面か、intermediate_image_sizes_advancedフィルターを使いましょう。

ただしpost-thumbnailだけは例外です。テーマがset_post_thumbnail_size()でこのサイズを定義している場合、この関数は内部でadd_image_size('post-thumbnail', ...)を呼び出しているため、実質的にadd_image_size()で登録されたサイズと同じ扱いになります。つまり、テーマがこの方法でpost-thumbnailを登録していれば、remove_image_size('post-thumbnail')で削除できます。

WordPress 5.3以降に追加された1536×1536・2048×2048の2サイズは、他のコア標準サイズと違い、実はadd_image_size()を使って登録されています。そのため、remove_image_size('1536x1536')・remove_image_size('2048x2048')のように指定すれば削除できます。

テーマ・プラグインが登録した独自サイズも削除できる

テーマやプラグインがadd_image_size()で追加した独自のサイズ(post-thumbnailなど)も、名前さえ分かれば同じように削除できます。登録されているサイズ名が分からない場合は、wp_get_registered_image_subsizes()で現在登録されているサイズの一覧を確認できます。

削除は今後のアップロード分にのみ適用される

remove_image_size()を実行しても、すでにアップロード済みの画像に対して生成済みのファイルは自動的には削除されません。過去の画像にも反映したい場合は、Force Regenerate Thumbnailsのようなプラグインで再生成するか、手動で削除する必要があります。

使用例

テーマが独自に登録した画像サイズを削除する

PHP
add_action( 'init', function() {
    remove_image_size( 'post-thumbnail' );
} );

WordPressコアが追加している1536×1536・2048×2048を削除する

PHP
add_action( 'init', function() {
    remove_image_size( '1536x1536' );
    remove_image_size( '2048x2048' );
} );

すでに登録されているサイズの上書き

すでに登録されているサイズを上書きしたい場合は、同じ名前でadd_image_size()を実行するだけでも上書きできます。

ただし、先にremove_image_size()で古い設定を削除してからadd_image_size()で新しいサイズを登録する、という書き方にすると、「既存のサイズを一度リセットしてから登録し直している」という意図がコード上で伝わりやすくなります。

PHP
function remove_then_add_image_sizes() {
	remove_image_size( 'image-name' );
	add_image_size( 'image-name', 200, 200, true );
}
add_action('init', 'remove_then_add_image_sizes');

コード Reference 一覧へ