ブログ初心者・Web制作の情報サイト
画像アップロード時の自動生成を追加・停止する – WordPress

画像アップロード時の自動生成を追加・停止する – WordPress

WordPressには画像アップロード時にリサイズを行い複数の画像を生成してくれる自動生成機能があります。

便利な機能ではあるのですが人によっては生成する画像のサイズを自分で設定したかったりそもそも自動生成されないように停止したい人もいるでしょう。

この記事ではWordPressでアップロード画像の自動生成を追加または停止し自分で管理する方法を紹介します。

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

WordPress(Ver 5.4.2)のデフォルト設定では以下の7種類の画像が自動生成されます。生成されるのはアップロードした画像が設定されている画像サイズより大きい場合のみです。

  • 150px (thumbnail_size)
  • 300px (medium_size)
  • 1024px (large_size)
  • 768px (medium_large_size)
  • 1536px
  • 2048px
  • 2560px

自動生成する画像サイズを追加する

WordPressでは自動生成する画像サイズを任意に追加できます。

画像縮小によるぼやけを軽減するために表示領域と同じサイズの画像を生成したい場合ときやRetinaディスプレイに対応するために解像度2倍の画像を用意したい場合に対応可能です。

WordPressでは以下の2通りの方法が利用できます。

  • 画像自動生成設定を変更する方法
  • functions.phpを利用して自動生成する画像を追加する方法

WordPressの画像自動生成設定を変更する

WordPressのメディア設定ではサムネイルサイズ・中サイズ・大サイズ 3種類の自動生成画像を設定できます。

WordPressの管理画面で 設定 > メディア をクリックしメディア設定画面を開きます。

WordPress:画像サイズの設定画面

高さの上限・幅の上限に任意の値を入れることで生成する画像サイズを設定できます。以下はデフォルト設定です。

  • サムネイルサイズ:150px
  • 中サイズ:300px
  • 大サイズ:1024px

add_image_size()で追加する

3つでは足りないとき、または計算式を利用した可変のサムネイル画像を作成したいときは functions.phpを利用して自動生成する画像を追加できます。WordPress関数の add_image_size()を使用します。

add_image_size()は画像アップロード時の自動生成サイズを新たに追加する関数です。functions.phpに追加して使用します。

function add_image_size(
    $name,
    $width = 0,
    $height = 0,
    $crop = \false
);
  • string $name:識別名
  • int $width:画像の横幅(デフォルトは0)
  • int $height:画像の高さ(デフォルトは0)
  • bool $crop:トリミングするどうか
add_image_size('my_thumb640', 640, 360, false);

上の例では640×360画像の自動生成を追加します。

画像の自動生成を停止する

WordPress(Ver 5.4.2)のデフォルト設定では画像アップロード時に以下の7種類のサイズが自動生成されます。

  • 150px (thumbnail_size)
  • 300px (medium_size)
  • 1024px (large_size)
  • 768px (medium_large_size)
  • 1536px
  • 2048px
  • 2560px

画像の自動生成を停止する方法は メディア設定・options.php・functions.phpの3つがありますがそれぞれで停止できる画像サイズが異なります。

メディア設では上から3種類、options.phpでは768px、functions.phpでは全て停止できます。すべてまとめて停止したい場合は functions.phpを使う方法が一番楽です。

メディア設定で自動生成を停止する

WordPressのメディア設定で幅、高さを0にすると自動生成を停止させることができます。この方法で停止できるのは次の3種類です。

  • 150px (thumbnail_size)
  • 300px (medium_size)
  • 1024px (large_size)

設定 > メディア でメディア設定画面を開きます。

WordPress:画像サイズの設定画面

それぞの幅・高さを0に設定すると自動性背を停止できます。アップロードする画像サイズを768px未満にすればこの方法だけで画像の自動生成を避けることが可能になりますよ。

options.phpで自動生成を停止する

options.phpで停止できるのは次の4種類ですが上3つはメディア設定で停止できるためここで行うのは 768px (medium_large_size)の停止です。

  • 150px (thumbnail_size)
  • 300px (medium_size)
  • 1024px (large_size)
  • 768px (medium_large_size)

まずは下記URLで options.phpにアクセスします。

サイト名/wp-admin/options.php
WordPress:medium_large_size

medium_large_size_w・medium_large_size_hの項目を0にし一番下にある「変更を保存」を押します。

これで 768×432 の画像も生成されなくなります。

functions.phpでまとめて自動生成を停止させる

functions.php を使用すれば自動生成されるすべての画像をまとめて停止できるので便利です。

下記コードを functions.phpに追加してください。WordPressのすべての画像自動生成を停止できます。

functions.phpの編集方法と注意

function disable_image_sizes($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']);
    return $new_sizes;
}

add_filter('intermediate_image_sizes_advanced', 'disable_image_sizes');
add_filter('big_image_size_threshold', '__return_false');

画像の自動生成が止まらないとき

上記のコードを追加しても自動生成が止まらないときはテーマやプラグインが set_post_thumbnail_size()や add_image_size()を使って自動生成画像を追加している可能性があります。

set_post_thumbnail_size()やadd_image_size()で追加された自動生成を停止するには remove_image_size()を使用します。

ただしこの方法は自動生成画像の識別名を調べる必要がある点に注意してください。ソースコードを参照できる上級者向けの方法です。

function disable_other_image_sizes() {
    remove_image_size('停止したい自動生成の識別名');
}
add_action('init', 'disable_other_image_sizes');

「停止したい自動生成の識別名」にはset_post_thumbnail_size()やadd_image_size()で登録した識別名を入れてください。

画像が表示されなくなった!

画像の自動生成を停止させると以前に生成された余計な画像を削除したくなります。そして過剰に削除してサムネイル画像が表示されなくなるのはよくあることです。

この場合はサムネイル画像の再生成を行いましょう。ただし自動生成を停止している場合は再生成できないので注意してください。設定を戻す必要があります。

Regenerate Thumbnailsの使い方(サムネイル再生成)
WordPressのテーマを変更して記事の並びが崩れた、自動生成画像を整理したら記事の画像が表示されなくなった。このような場合にはRegenerate Thumbnailsを使い画像を再生成してしまえば簡単に問題を解決できますよ。

最後に

WordPressでアップロード画像の自動生成を追加または停止し自分で管理する方法を紹介しました。

方法を知っていれば任意サイズの画像を生成したいとき・自動生成を無効にしたいときのどちらにも対応できますよ。

また自動生成される画像はWordPressによるものだけではありません。テーマによって自動生成されるサムネイル画像もあるということを覚えておいてください。