てっきんの具。

「てっきん」と呼ばれて40年のおっさんが書くブログ

ひっくり返るくらい超絶便利な wp media regenerate

WP-CLI Advent Calendar』17日目担当の @tecking です。

今日は、アイキャッチ画像(サムネイル)をつくるときに便利なコマンド「wp media regenerate」を紹介します。「WP-CLIで採用されているビヘイビア駆動開発を紹介!」とか、「[WP-CLIアドベントカレンダー2014: 14日] ローカルのWP-CLIコマンドをリモートで実行するコマンドの紹介」とかの記事を読むと「『WP-CLI』ってガッツリ開発するような人向けなんだろうなあ」と思われる方もいるかもしれませんが、いやいやなんのなんの。今日紹介するのは、テーマ制作のときにかなり活躍してくれそうなコマンドですよ。

任意の大きさでアイキャッチ画像をつくる add_image_size()

テーマ制作の場面で、アイキャッチ画像(サムネイル)を任意の大きさで生成する add_image_size() 関数を使ったことのある方、多いかと思います。[メディア]-[新規追加]などでの画像アップロード時に「320px×320pxにトリミングした画像」をつくりたいとき functions.php に

<?php
add_theme_support( 'post-thumbnails' );
add_image_size( 'foo-thumbnail', 320, 320, true );

というように追記する、アレです。ちなみに、その画像をテーマ側で呼び出すときはこうですね。

<?php if ( has_post_thumbnail() ) { the_post_thumbnail( 'foo-thumbnail' ); } ?>

テーマのつくりに合わせて次々とサイズを追記していけるのも add_image_size() の便利なところです。

便利だけど途中の仕様変更に弱い

ところがこの関数、テーマ制作途中(あるいはサイト運用中)の仕様変更に追従しない、という弱点もあります。たとえば functions.php に

<?php
add_theme_support( 'post-thumbnails' );
add_image_size( 'foo-thumbnail', 320, 320, true );

と書いて画像を5点アップロードした後

<?php
add_theme_support( 'post-thumbnails' );
add_image_size( 'foo-thumbnail', 320, 320, true );
add_image_size( 'bar-thumbnail', 480, 480, true ); // ここを追記した

と追記した場合。それ以前にアップした5点については、480px×480pxのアイキャッチ画像がつくられないんですね。かといって、一度アップした画像を再アップするのも非効率きわまりない話。テーマ制作途中にクライアントから「んー、このサムネイルのサイズもうちょっと大きくなるといいんだけどねー」とか言われて

えぇ――――っ!!
今からアイキャッチのサイズ変えるのかい?!

   ミ~ ̄ ̄ ̄\
   / ____亅
   / > ⌒ ⌒|
  |/ (・) (・)|
  (6――○-○-|
  |   つ |
  |  ___)/
   \ (_/ /
   /\__/
  /  \><∧
  / /  V||
 /_/   |||
⊂ニu\__/Lu⊃
  |  / /
  | / /
  | / /
  (ニフフ

となったりしちゃうわけです。

プラグインもあるけれど『WP-CLI』の方が有利(たぶん)

そんなときに活躍してくれるのが wp media regenerate コマンド。テーマ制作途中・サイト運用中に add_image_size() の追記があっても

wp media regenerate

と実行するだけで

Do you realy want to regenerate all images? [y/n] y
Found 3 images to regenerate.
Regenerated thumbnails for "baz" (ID 53).
Regenerated thumbnails for "bar" (ID 52).
Regenerated thumbnails for "foo" (ID 51).
Success: Finished regenerating all images.

てな感じでサクっと解決しちゃいます。

ちなみに、このコマンドを知る前は『Regenerate Thumbnails』というプラグインを使っていました。有効化すると、管理画面の[ツール]-[Regen. Thumbnails]メニューが現われ、GUIでアイキャッチ画像を再生成できるようになっています。

『Regenerate Thumbnails』にはずいぶんお世話になったのでdisるのも気が引けますが…… wp media regenerate の優位性は、アイキャッチ画像のサイズが途中で変わるようなときに現われます。たとえば functions.php に

<?php
add_theme_support( 'post-thumbnails' );
add_image_size( 'foo-thumbnail', 320, 320, true );
add_image_size( 'bar-thumbnail', 480, 480, true );

と書いてテーマ制作・サイト運用している途中で

<?php
add_theme_support( 'post-thumbnails' );
add_image_size( 'foo-thumbnail', 320, 320, true );
add_image_size( 'bar-thumbnail', 640, 640, true ); // ここのサイズを変えた

とサイズを変えたとき。

  • 『Regenerate Thumbnails』 …… 640px×640pxの画像を生成、480px×480pxの画像は残ったまま
  • wp media regenerate …… 640px×640pxの画像を生成、480px×480pxの画像は削除

と挙動の違いがあらわれます。余分なリソースを喰わないという点で wp media regenerate はステキですよね。

ではでは、ハッピーなWP-CLIライフを! 『WP-CLI Advent Calendar 2014』次の日直(12月18日)は @wokamoto さんです。

(photo by Kelbv CC BY

カテゴリー:

タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください