画像の再生成を行う方法【CLIの方が早い】

WordPressで画像サイズを変更した際に既存の画像をその画像サイズで生成したい場合があると思います。
今回はその生成方法を「プラグイン」「WP-CLI」の二通りの方法で紹介します。
プラグインを使用する方法では少々時間がかかりますが、誰でも簡単にできます。
WP-CLIの方法ではコマンドを入れる必要がありますが、プラグインより数倍早く完了します。
自分の場合変換する再生成を行う画像数が多かったために「WP-CLI」を使用しました。
二つのサイトでそれぞれ画像数が
サイトA・・・「100,000」
サイトB・・・「40,000」
とありました。
プラグインで生成した場合の1枚当たりの速度は
サイトA・・・「10秒」
サイトB・・・「2秒」
といった感じでした。
このペースだと
サイトAは「10(秒)*100,000(枚)/( 60(秒)*60(分)*24(時間) ) ≒ 11.5」となり11日半かかる計算で、サイトBは「2(秒)*30,000(枚)/( 60(秒)*60(分) ) ≒ 16.6」と16時間半かかる計算です。
この間ブラウザで変換中のまま待ち続けるのは不可能な為(特にサイトA)、WP-CLIを使ったところどちらのサイトでも1枚当たりに0.2秒ほどで生成してくれました。
それでもサイトAでは5時間半ぐらいかかる計算ですが、11日よりはるかに速いです。
おそらくかなりレアなケースだと思いますので、通常プラグインで良いと思います。
プラグインで対応する場合
使用するプラグインは「Regenerate Thumbnails」というプラグインです。
プラグインで検索すると出てきますので、インストール、有効化しましょう。
「管理画面」⇒「ツール」より再生成を行う画面に移動できます。

EWWW Image Optimizerなどを使用している場合には生成されるたびに最適化され時間がかかるため一度無効化し、後から一括最適化を行いましょう。
【チェックボックス】
「すでに正しいサイズで存在するサムネイルの再生成をしない」
「登録されていない画像サイズで生成されている画像を削除する」
【ボタン】
「すべての画像で再生成を行う」
「アイキャッチ画像に設定されている画像のみ再生成を行う」
「登録されていない画像サイズで生成されている画像を削除する」を選択した場合削除された画像を参照している投稿や固定ページでは画像が表示されなくなるので注意しましょう。
現在登録されているサムネイルのサイズとありますが、すべて再生成されるとは限りません。
テーマの設定で生成されないようにしている場合はそちらが優先されます。
どの画像サイズが生成されるかについては「メディア」⇒「画像メニュー」⇒「サムネイル再生成」をクリックします。
そうすると以下のように「×」「✔」で生成される画像サイズが確認できます。

ボタンを押したらスタートされ、プログレスバーで進捗が確認できます。
冒頭の通り画像数が多いとかなり時間がかかるため完了まで放置しておきましょう。
WP-CLIで対応する場合
私が行った環境ではmixhostのレンタルサーバーにTeraTermでssh接続して行いました。
mixhostのVPSではありませんので、root権限はありませんが、なくても実行可能です。
WP-CLIを使用できるようにするところから見ていきますが、すでに導入済みの場合は最後のコマンドの部分のみ見てください。
WP-CLIをダウンロードします。
$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
以下コードで確認します。WP-CLI versionなどいくつかの情報が表示されれば問題ありません。
$ php wp-cli.phar --info
wpコマンドで実行可能にするため以下を入力します。
$ mkdir -p bin$ chmod +x wp-cli.phar$ mv wp-cli.phar bin/wp
フォルダ作成し、実行権限の付与、作成したフォルダにwp-cli.pharを移動し、wpに名前変更
といった形です。
wpが使用できるはずですので以下のコードを入力します。
先程と同等の内容が表示されれば問題ありません。
$ wp --info
ここから画像部分に移ります。
下記コードで現在登録されている画像サイズを確認できます。
$ wp media image-size --path=$HOME/public_html
mixhostではpublic_htmlがwordpressのインストールされているフォルダになります。
サブディレクトリにインストールされたフォルダを指定する場合は
「–path=$HOME/public_html/sub-dir」のようにパス部分を変更します。

今回はmediumサイズの画像の再生成を行います。
「–image_size=」の後に先ほど確認したimage-sizeのnameを入力します。
$ wp media regenerate --image_size=medium --path=$HOME/public_html
以下のように画像生成され、すべて生成されると終了します。

今回はmediumサイズのみ指定しましたが、そのほかのサイズやすべてのサイズの生成可能も可能です。
詳しくはwordpress公式のwpコマンドより確認してください。
最後に
画像件数が多いとサーバーにそこそこ負荷がかかるようです。
作業中の様子を見たところメモリの8GBがほぼ100%になっていました。
一応念頭におき作業してください。