WordPressで管理している画像ファイルは、いろんなサイズで保存されています。標準だと「thumbnail(サムネイルのサイズ)」「medium(中サイズ)」「large(大サイズ)」とかですね。それ以外にもfunctions.phpに追加したadd_image_size()で書かれた画像サイズなども保存しています。これらの画像サイズのURLを取得するのにimage_downsize()を使えば取得することができます。

image_downsize()の使用は、以下の通りです。

image_downsize()の仕様

image_downsize( $attachment_id, $size );

引数の説明

引数名説明
$attachment_idint画像の添付ID
$sizestring or array画像のサイズ指定
  • $attachment_idは挿入する画像の添付ファイルIDになります。添付ファイルIDは、wp_postsテーブルのIDです。
  • $sizeは、取得したい画像サイズの名前です。文字列のほかに配列で複数指定できます。

返り値

キー名説明
[0]int横幅(px)の数字
[1]int縦幅(px)の数字
[2]boolean指定のサイズかどうか
[3]string画像URL

image_downsize()の使いドコロ

image_downsize()の使いドコロは、指定サイズの画像のURLを簡単に習得できる上、指定の画像サイズのファイルがない場合でもオリジナルサイズの画像ファイルのURLで代替できるところにあります。添付IDに画像ファイルがない場合は、falseのみ返ってくるので判定もしやすいです。

特定の添付IDの「smartphone」という画像サイズのURLを取得するサンプルを紹介します。

functions.php
function get_image_filepath( $id ) {
    $path = image_downsize( $id, 'smartphone' );
    return $path[0];
}

「smartphone」という画像サイズは標準ではありませんが、add_image_size()で追加すれば使えるようになります。「smartphone」画像サイズの画像がない場合は、元画像のURLを返して[0]・[1]の数字にadd_image_size()で指定した画像サイズの大きさ、[2]に「false」が入ってきます。「smartphone」画像サイズの画像がある場合は、「smartphone」画像サイズの画像がURLに入り、[0]・[1]のadd_image_size()で指定した画像サイズの大きさ、[2]に「true」が入るような配列で返ってきます。

まとめ

image_downsize()は、テーマ開発をあまり使う機会は多くない関数かもしれませんが、サムネイル画像のthe_post_thumbnail()などの関数の内部で使われていたりして知らないうちに使用していたりします。どんな感じで使っているのかを知っておくだけでもいい関数のひとつだと思います。