投稿に紐づいている画像のサムネイルを複数表示する
- Category: WordPress関係
単純に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枚画像を表示とかできていいかもね。