1. TOP
  2. Webサービス
  3. add_image_size(WordPress関数)とwp media regenerate(WP CLI)で新しいサイズの画像を作成・追加する

add_image_size(WordPress関数)とwp media regenerate(WP CLI)で新しいサイズの画像を作成・追加する

wp_image_size_custmoize

WordPressにおいて画像のサイズは「サムネイルのサイズ」・「中サイズ」・「大サイズ」の3つの設定しかできません。当エコテキブログではindex.phpの画面に650×350の画像を表示させることになっていたため、原寸大の画像をそのまま表示させていました。

ですが、この状態では無駄に容量が大きいサイズの画像がアップロードされます。ページの読み込み速度的にもよろしくありません。そこで[メディア設定]で決められる画像以外にも、任意のサイズの画像を設定できるようにします。

任意の画像サイズを設定する方法

WordPressで任意の画像サイズを設定・作成するためには、functions.phpでWordPress関数を記述し、WP CLIコマンドを用います。

以下で説明するWordPress関数とWP CLIコマンドは上記のページを参考にしています。

WordPress関数

add_image_size('large-thumbnail', 650, 350, true);

650×350の画像を新しく作成します。’large-thumbnail’とは新しい画像サイズの名前で、第四引数の”true”で指定した大きさでの切り抜き(ハードクロップ)を指定します。

WP CLIコマンド

# wp media regenerate

functions.phpにおいて追加でadd_image_sizeを記述しても、これから投稿される画像についてのみ’large-thumbnail’が作成されます。

既存の画像には’large-thumbnail’は適用されません。そこで既存の画像についても’large-thumbnail’を作りたければ、WP CLIコマンドの”wp media regenerate “が重宝します。

# wp media regenerate --image_size="large-thumbnail"

具体的にはコマンドのオプションとして”–image_size”をつけて新しいサムネイルの名前を指定します

wp_image_size_custmoize_2

実行するとこんな感じでターミナルの画面が流れていきます。すでにアップロードした画像についても、650×350の画像が作成されていきます。約2,500枚の画像を新しくするために約1時間ほどかかりました。

再帰的にユーザー名とグループ名を変更する

# pwd
/var/www/html/wp-content/uploads/2018/12
# ls -la
-rw-rw-r--  1 apache apache      5445 12月  7 15:47 dkdc_captain_interview_danstreet_0-150x150.jpg
-rw-rw-r--  1 apache apache     18662 12月  7 15:47 dkdc_captain_interview_danstreet_0-400x225.jpg
-rw-rw-r--  1 apache apache     30388 12月  7 15:47 dkdc_captain_interview_danstreet_0-546x307.jpg
-rw-rw-r--  1 root   root       37444 12月 11 15:43 dkdc_captain_interview_danstreet_0-650x350.jpg  // root
-rw-rw-r--  1 apache apache     50854 12月  7 15:47 dkdc_captain_interview_danstreet_0-768x432.jpg
-rw-rw-r--  1 apache apache    462667 12月  7 15:47 dkdc_captain_interview_danstreet_0.jpg
-rw-rw-r--  1 apache apache      7745 12月  7 14:45 dkdc_nhk_osaka_melody_2018-150x150.jpg
-rw-rw-r--  1 apache apache     23249 12月  7 14:45 dkdc_nhk_osaka_melody_2018-400x224.jpg
-rw-rw-r--  1 apache apache     40430 12月  7 14:45 dkdc_nhk_osaka_melody_2018-546x306.jpg
-rw-rw-r--  1 root   root       58478 12月 11 15:43 dkdc_nhk_osaka_melody_2018-640x350.jpg  // root

既存の画像を元に作成した650×350の画像に注目してください。”wp media regenerate”をroot権限で実行しているため、ユーザー名とグループ名がrootになっています。rootのままでは実際の画面に新しいサイズの画像は反映されません。そこで再帰的にユーザー名とグループ名を変更します。

# chown -R apache:apache /var/www/html/wp-content/uploads/

ユーザー名とグループ名をともに”apache:apache”に変更すると、実際の画面に新しいサイズの画像が反映されるようになります。