Webサイト発注虎の巻ダウンロード
Webサイト発注虎の巻ダウンロード

【WordPress】WP-CLIを利用して、負荷を減らしつつ画像のリサイズをしよう

づや

こんにちは、エンジニアのづやです。

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の間の画像をリサイズしてくれるので、特定の枚数単位でリサイズをかけていくことが可能です。

割と知らないエンジニアの方がいたので、備忘録がわりに記事にさせていただきました。ではまた。