こんにちは、エンジニアのづやです。
WordPress便利ですよね。ただサイト構築してる最中だったり、リニューアルだったりで画像のサイズパターン増えちゃうことありますよね。そんなとき、過去にアップロードした画像を作り直すことがあるかと思います。
プラグインでやるなら、Regenerate Thumbnailsなどを使用するでしょうか。管理画面からすべての画像をリサイズできるのは、すごく便利ですね。ただすべての画像の、すべての画像サイズに対して、リサイズを行う必要が発生してしまいます(1個ずつもできるけど、あんまりないですよね)。
画像サイズや量によっては、膨大な時間がかかってしまうこともあります。一度に検証することで、サーバに負荷がかかって重くなってしまうこともあります。
そんなときWP-CLIで画像をリサイズするとで解決できることもあったので、使い方を紹介します。
wp mediaコマンドの実行
使うのは「wp media」コマンドです。
すべての画像のすべてのサイズをリサイズ
すべての画像をすべてのサイズで作成する場合は、下記になります。
wp media regenerate
Regenerate Thumbnailsでやれることをコマンドでやる感じですね。
こちらのほうが速いらしいです。生成の速度は変わらなそうですが、Regenerate Thumbnailsだとhttpリクエスト発生するので、そのあたりの差は出てきそうです。
特定のサイズパターンの画像だけリサイズ
新しく追加した画像サイズが、古いデータにない場合などに使用します。
wp media regenerate --image_size=medium
image_sizeにわたしているのが、再生成したい画像サイズです。
<?php add_image_size( $name, $width, $height, $crop ); ?>
add_image_sizeを使って、新しいサイズパターンを追加して、過去の画像をリサイズしたいとき、結構あるのではないでしょうか。
特定のサムネイルのみリサイズしたい場合
あまり使いたいシーンに出会ったことはないのですが、特定の画像の再生成のみ行うことも可能です。
wp media regenerate 10
IDが10のサムネイルの画像のみ、再生成します。記事のIDではなくサムネイルのIDなので、注意です(投稿タイプが「attachment」のデータのID)。
wp media regenerate 10 11 12
こんな感じで複数枚も同時指定が可能です。
指定した範囲ごとにリサイズしていきたい場合
今回一番伝えたかったところです。一括で画像再生成してしまうとサーバの負荷が心配なときに使います。
seq 1 100 | xargs wp media regenerate
こう呼んであげると、サムネイルのIDが1から100の間の画像のみリサイズしてくれます。1から100の間に、attachment以外の投稿タイプが含まれている場合は、何もせずにスキップします。
seq 101 200 | xargs wp media regenerate
こうしたらIDが101から200の間の画像をリサイズしてくれるので、特定の枚数単位でリサイズをかけていくことが可能です。
割と知らないエンジニアの方がいたので、備忘録がわりに記事にさせていただきました。ではまた。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。