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

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

Kazuya Takato

Kazuya Takato

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

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サイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。

Webサイト制作の実績・料金を見る

この記事のシェア数

1983年生まれ。SIerとしてのキャリアをスタートし、JavaやC#を中心に多岐にわたる開発プロジェクトにエンジニアとして参加。その経験を活かし、LIGを創業。バックエンドおよびフロントエンドエンジニアとしての深い知識と経験をもとに、多様なプロジェクトに従事。2023年7月には社長室室長に就任にし、社内の体制やルールの最適化、AI技術の推進など、経営戦略の一翼を担っています。

このメンバーの記事をもっと読む