不要な画像を作成せず必要なものだけにする!WordPressのメディア設定

WordPressは初期設定のままだと、画像を一つアップロードするといくつものサイズの画像が自動生成されるようになっています。

自動生成される画像が必要であれば、この機能はとても便利なものです。
しかしその画像を使わないのであれば、不要な画像がどんどんたまってしまって管理しづらくなってしまいます。

そんな不要な画像を作らず、必要なサイズの画像だけを生成するようにする、メディア設定のメモです。

自動生成される画像サイズ

WordPressの初期設定では、アップロードした画像が以下の画像サイズより大きい場合に、自動生成されるようになっています。

これから紹介する管理画面での設定やfunctions.phpのコードでは、「thumbnail」「medium」のようなサイズ名(キー)を使います。管理画面に表示されている「サムネイル」「中サイズ」といった表示名とは別物なので、先に対応関係を一覧にしておきます。

管理画面での表示名寸法コード上のサイズ名(キー)備考
フルサイズオリジナルfull
サムネイル150×150thumbnail[設定>メディア]で変更可能
中サイズ300×300medium[設定>メディア]で変更可能
ミディアムラージ768×0medium_large管理画面には表示されず、options.phpのmedium_large_size_wで操作
大サイズ1024×1024large[設定>メディア]で変更可能
(表示名なし・WordPress 5.3以降)1536×15361536×1536サイズ名がそのまま寸法の文字列になっている点に注意
(表示名なし・WordPress 5.3以降)2048×20482048×2048同上
(表示名なし)2560px(2561px超の画像のみ)─(キー名は存在しない)add_image_sizeで登録されたサイズではなく、big_image_size_thresholdフィルターで生成される特別処理

※scaledはサイズ登録の仕組みとは別の処理のため、他のサイズと同様のキー名はありません

アップロード画像のサイズが大きければ大きいほど生成される画像は多くなります。1枚の画像をアップロードすると、最大で8枚の画像が追加されます(元画像を含む)。以下は、2561px以上の画像をアップロードした際に自動生成された画像一覧です。

メディアから画像を削除すれば、自動生成された画像も一緒に削除されます。

自動生成される画像が必要か

広告

もちろん生成されるサイズの画像を使うなら、わざわざ自動生成を停止させる必要はありません。またWordPressでは、これらのサイズがあることで、画像のレスポンシブ対応も自動で行います。
このように自動的に画像サイズを生成してくれるのは便利な機能です。

しかしこれだけのサイズが必要かどうかも要検討です。画像が増えるほど管理は大変になり、サーバー全体のパフォーマンスに影響を与える可能性があります。

広告

後から不要なサイズの画像を削除するのも手間です。

やはり不要なものは初めから作らないように設定しておく方が良いでしょう。サイトに不要な画像サイズがあれば、あらかじめ自動生成を停止させておいた方が後々の手間を減らせます。

元の画像サイズが大きいほどたくさんの画像が自動生成されるので、元画像のサイズもあまり大きくなりすぎないように注意したいところです。

WordPressのメディア設定

管理画面メニューの【設定 > メディア】で自動生成される画像のサイズを設定できます。

ここでサイトに必要な画像サイズを設定していきましょう。

画像サイズ設定

サイトのデザインに合わせて任意のサイズに変更できます。
初期では「サムネイル(150px)・中サイズ(300px)・大サイズ(1024px)」が設定されています。入力に(px)は不要です。

※使用するテーマによってはサイトデザインに合わせて変更していることがあるので、デフォルトのサイズが異なることがあります。

ここに設定されている画像サイズは投稿エディタで指定できるようになっています。

選択するときに「フルサイズ」というものも選択肢にありますが、これは画像の元のサイズのことです。また2560px以上の画像サイズの場合は「〇〇-scaled」の画像が適用されるようになっています。

画像サイズの作られ方

サイズ設定で入力した幅や高さの数字は「最大寸法」で、画像の縦横比率を保って長い方に合わせてサイズ変換されます。

例えば「280 × 192」の画像なら長い方が「150」になって、短い方は元の比率に合わせて縮小します。

「縮小してリサイズする」ので、元の画像サイズが入力されているサイズより小さい場合は生成されません。例えば上記の画像にある「280 × 192」の画像の場合、幅・高さを300に設定した中サイズやそれ以上の大サイズは作られません。

サムネイルサイズは初期設定で正方形にトリミングされる仕様になっているため、実際にはこの通りの比率維持にはならない点に注意が必要です。

サムネイルはトリミングされるのがデフォルト

【サムネイルのサイズ】には「サムネイルを実寸法にトリミングする」というチェックボックスがあります。

これをチェックしている場合、サムネイルサイズの場合は比率に関係なく入力されているサイズにトリミングされて生成します。

トリミングをせず、縦横比を維持したまま設定したサイズが生成されるようにしたい場合は、こちらのチェックを外します。

管理画面で設定できる自動画像サイズ生成の停止

メディア設定のサイズを「0」にする

自動生成したくないサイズは幅も高さも「0」にして保存すればつくられないようになります。

サイトで使用する画像サイズが決まっていて、初期値とは別のサイズにしたい場合はこちらの数値を変更して使用するものが生成されるように変更しましょう。

768px の画像サイズ生成をしないようにする

メディア設定画面には表示されない画像サイズがあります。この画像サイズも不要であれば生成されないようにしておきたいものです。

この設定は「/wp-admin/options.php」ページで変更します。管理画面からのリンクはないのでURLで直接アクセスしてください。

options.php にアクセスすると、「すべての設定」という画面が表示されます。

このページ上で「medium_large_size_w」を検索します。この項目に数字が入っていると、そのサイズの画像が自動生成されます。不要な場合は「0」にして、一番下の「変更を保存」ボタンをクリックします。

設定後は生成されないか、大きめの画像を登録して確認してみてください。

メディア設定のサイズと options.php の「medium_large_size_w」を0にしておけば、「サムネイル・中・大・medium_large_size」サイズは自動生成されなくなります。

functions.phpでまとめて管理する

アップロードする画像を1536px未満にする、という制約がもてるなら先述した設定だけでも十分ですが、それ以上のサイズを登録する可能性がある場合は functions.php を使用して設定します。

functions.php での設定なら管理画面上で設定する内容も一括で変更できます。大きい画像サイズの自動生成変更が必要ならこちらで一括設定すると管理が楽です。

全てまとめて停止する

add_image_size()で全サイズを0×0にする

まず一つ目は add_image_size() を使って、全サイズを0×0にするを設定することで自動生成を停止する方法です。

functions.php
add_image_size('thumbnail', 0, 0);
add_image_size('medium', 0, 0);
add_image_size('medium_large', 0, 0);
add_image_size('large', 0, 0);
add_image_size('1536x1536', 0, 0);
add_image_size('2048x2048', 0, 0);

サイズ名がそのまま数値になっているため紛らわしいですが、「1536×1536」「2048×2048」という文字列は、実際の出力寸法ではなく、WordPress側が最大幅・最大高さの枠として登録している名前そのもの(登録名)です。

実際に生成される画像は元画像の縦横比に合わせて縮小されるため、見た目の寸法とは一致しません。アップロードした写真に合わせて「1536×921」のように書き換えてしまうと、WordPressは別の新しいサイズとして認識し、既存の1536×1536サイズを無効化できなくなります。

これは、add_image_size を使用する時以外にもサイズを再定義・停止する際は、必ず WordPress 側の登録名(thumbnailmediummedium_largelarge1536x15362048x2048)をそのまま使いましょう。

intermediate_image_sizes_advancedで空配列を返す

intermediate_image_sizes_advanced はWordPressで自動生成される画像サイズをフィルタリングするフックです。

画像サイズを一括で停止したい場合はこちらのコードを使用します。

functions.php
function remove_add_image_size($sizes) {
  $sizes = array();
  return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'remove_add_image_size');

サイズ情報が格納されている $sizes を空にすることで自動生成されないようになります。

テーマによってはこれら以外にも画像サイズを追加していることがあります。それらはテーマに必要な画像サイズだとは思うので、削除しても表示に問題がないかはよく確認してみてください。

特定のサイズだけを停止する

特定の画像サイズを指定して生成しないようにするには unset()remove_image_size() を使って登録名を指定します。

functions.php
function remove_add_image_size($sizes) {
  unset($sizes['thumbnail']);
  unset($sizes['medium']);
  unset($sizes['medium_large']);
  unset($sizes['large']);
  unset($sizes['1536x1536']);
  unset($sizes['2048x2048']);
  return $sizes;
}
add_filter('intermediate_image_sizes_advanced', 'remove_add_image_size');
functions.php
function remove_add_image_size() {
  remove_image_size( '1536x1536' );
  remove_image_size( '2048x2048' );
}
add_filter('init', 'remove_add_image_size');

remove_image_size()で削除できるのは、add_image_size()を使って登録されたサイズのみです。サムネイル・中サイズ・ミディアムラージ・大サイズ(thumbnail・medium・medium_large・large)はこの仕組みでは管理されていないため、remove_image_size('medium')のように指定しても削除されません。

テーマ・プラグイン独自のサイズも消せる

使用中のテーマやプラグインがadd_image_size()で追加している独自サイズも、同じ方法で削除できます。ただ、多くの場合サイズ名が分からないと思うので、まずは現在登録されているサイズを確認しましょう。

テーマで登録されている画像サイズの情報は、wp_get_registered_image_subsizes() で確認できます。

functions.php
add_action('admin_notices', function () {
    if (current_user_can('manage_options')) {
        echo '<pre>' . print_r(wp_get_registered_image_subsizes(), true) . '</pre>';
    }
});

このコードを一時的にfunctions.phpに追加すると、管理画面上に thumbnailmedium といったコア標準のサイズに加えて、使用中のテーマやプラグインが独自に登録しているサイズも一覧で確認できます。テーマによってはpost-thumbnailのような固有の名前で登録されていることもあります。

print_r で出力される配列にはwidth・height・cropの情報も含まれているので、「このサイズは何ピクセルだったか」を確認しながら消すかどうか判断できます。

ここで見つかったサイズ名は、remove_image_size() で削除できます。確認できた名前をそのまま指定するだけなので、テーマやプラグインが追加した不要なサイズも整理できます。

functions.php
remove_image_size('テーマ独自のサイズ名');

確認が終わったら、admin_noticesのコードは残さず削除しておきましょう。

scaled 画像の自動生成停止

2561px以上の画像の場合に生成される「〇〇-scaled」という画像サイズの生成停止は以下のコードを記述する必要があります。全て・個別どちらを選んでも別途この設定は必要になります。

functions.php
add_filter('big_image_size_threshold', '__return_false');

結局どこまで設定すればいい?対策レベル別まとめ

対応レベル具体的な操作停止されるサイズ生成される追加画像元画像+生成画像の合計
0. 何もしない(デフォルト)なしサムネイル・中・ミディアムラージ・大・1536×1536・2048×2048・scaled=7枚8枚
1. メディア設定で0にした場合[設定>メディア]でサムネイル・中・大の幅高さを0にサムネイル・中・大ミディアムラージ・1536×1536・2048×2048・scaled=4枚5枚
2. add_image_sizeで消した場合functions.phpで記事内のコード例(6サイズを0×0に指定)サムネイル・中・ミディアムラージ・大・1536×1536・2048×2048scaledのみ=1枚2枚
3. add_filterで全停止した場合intermediate_image_sizes_advanced(空配列)+big_image_size_threshold(scaled停止)を併用上記6サイズ+scaled+テーマ/プラグイン登録サイズなし=0枚1枚(オリジナルのみ)

ここまで3つの方法を紹介しましたが、迷ったら次を目安に選んでみてください。

とりあえず試したいだけなら、まずはメディア設定でサムネイル・中・大サイズを0にするだけで十分です。コードを触らずに管理画面の操作だけで完結します。

サーバーの容量やバックアップの容量が気になるなら、add_filterで全停止するのがおすすめです。生成ファイルを最小限に抑えられるので、画像が多いサイトほど特に効果を感じやすいはずです。

テーマやプラグインが「thumbnail」といった特定のサイズを前提に表示している場合、全部消すと表示が崩れる可能性があります。そのため、add_image_sizeやremove_image_size()で必要なサイズだけ選んで停止する方法が安全です。

表示速度やレスポンシブ対応(srcset)を重視するなら、この場合も全停止は避けます。mediumやlargeなど一部のサイズは残しておく方がバランスが良いです。

すでにアップロードしている画像がある場合

もし自動生成停止の設定をする前に画像をアップロードしている場合、その画像には適用されません。アップロードした画像も含めてリサイズしたい場合は、すでに生成されているサムネイル画像を再生成するプラグインを使用するのがおすすめです。

メディアライブラリの画像を選んでサムネイルを再生成できるプラグインです。無料で機能制限もなく、有効インストール数20万以上・評価4.7と実績も十分です。

管理画面の「ツール」→「Force Regenerate Thumbnails」を開くと、ボタン一つですべての登録済み画像サイズを一括再生成できます。加えて、メディアライブラリの一覧画面から特定の画像だけを選んで個別に再生成することも可能です。

自分が認知していないカスタマイズした画像サイズが存在する可能性がある場合、再生成されると元に戻せないので要確認です。念の為バックアップをとっておいた方が安心です。

生成されずとも問題がないことが分かった上で、削除やコメントアウト、もしくは必要なサイズに上書き設定しましょう。

広告

カテゴリー : WordPress

タグ :