der Gegenwart

投稿に紐づいている画像のサムネイルを複数表示する

単純に1枚表示するだけだったら、「アイキャッチ画像」を利用すればいいけど、複数枚出したいとなるとそうはいかないので、以下の関数を利用する。

引数の$maxは表示枚数。デフォルトは-1なので全部。$sizeはサムネイルのサイズ。add_image_size()で定義したサムネイルの名前を指定する。foreach文の中でechoしてるとこが出力部分だから適当に書き換えれば好きなマークアップに変更できる。

function post_thumbs_gallery($max='-1', $size='thumbnail'){
    global $post;
    $args = array(
        'post_type' => 'attachment',
        'numberposts' => $max,
        'post_status' => inherit,
        'post_parent' => $post->ID,
        'post_mime_type' => 'image',
        'orderby' => 'menu_order ID',
    );
    $attachments = get_posts($args);
    if (is_array($attachments)) {
        foreach ($attachments as $attachment) {
           echo '<a href="'.$attachment->guid.'" title="'.$attachment->post_title.'">'.wp_get_attachment_image($attachment->ID,$size)."</a>";
        }
    }
}

wp_get_attachment_imageが吐き出す、img要素の記述が気にくわなくて、どうにかした記憶があるんだけど、どうしたんだっけか。明日職場で確認しよう。

追記

ちなみに。

関数内にget_posts()が書かれているのでわかる人はわかると思うけど、$argsの中身を色々書き換えて、柔軟にファイルの呼び出しができる。

「post_mime_type」に「image/jpeg」とか指定すると、JPEG画像だけ呼び出せたり、「offset」を追加して「1」とか指定すると、最初の1つを除外して、2つ目の画像から表示したりもできる。

あとは、写真サイトで使うときなんかに、$args内にある「post_parent」を指定しないでこの関数をhome.phpで使うと、WordPress内にアップロードした全画像の中からX枚画像を表示とかできていいかもね。