WordPressにおいて画像のサイズは「サムネイルのサイズ」・「中サイズ」・「大サイズ」の3つの設定しかできません。当エコテキブログではindex.phpの画面に650×350の画像を表示させることになっていたため、原寸大の画像をそのまま表示させていました。
ですが、この状態では無駄に容量が大きいサイズの画像がアップロードされます。ページの読み込み速度的にもよろしくありません。そこで[メディア設定]で決められる画像以外にも、任意のサイズの画像を設定できるようにします。
任意の画像サイズを設定する方法
WordPressで任意の画像サイズを設定・作成するためには、functions.phpでWordPress関数を記述し、WP CLIコマンドを用います。
以下で説明するWordPress関数とWP CLIコマンドは上記のページを参考にしています。
WordPress関数
[php]add_image_size(‘large-thumbnail’, 650, 350, true);[/php]
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”をつけて新しいサムネイルの名前を指定します
実行するとこんな感じでターミナルの画面が流れていきます。すでにアップロードした画像についても、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”に変更すると、実際の画面に新しいサイズの画像が反映されるようになります。