Cat Speak

札幌在住のWebデザイナー・コモモのブログ

ホーム > ウェブ制作Tips > WordPress > 投稿に挿入された画像を一覧にしてThickBoxのようなギャラリー

投稿に挿入された画像を一覧にしてThickBoxのようなギャラリー

前の投稿で、「アイキャッチ画像に複数のサイズを指定し、ThickBoxのような写真ギャラリー」を作ってこれでいける!と思っていたのですが、その後仕様をよく確認したら、残念なことにギャラリーの写真が投稿に対してひとつの画像ではなく、複数の画像を指定しなければならないことになっていました。

投稿に挿入されている画像を全て一覧にしたい場合もけっこうあるのかもしれないので、この方法もメモしておきたいと思います。



ループ

<ul>
<?php 
if ( have_posts() ) : while ( have_posts() ) : the_post();
$attachments = get_children(array('post_parent' => $id, 'post_type' => 'attachment', 'post_mime_type' => 'image'));
if (is_array($attachments) ){
	foreach($attachments as $attachment){
		$title= $attachment->post_title; // タイトル 
		$imageL = wp_get_attachment_image_src($attachment->ID , 'large');
		$imageT = wp_get_attachment_image_src($attachment->ID , 'thumbnail');
?>
		<li><a href="<?php echo ($imageL[0]); ?>" rel="gallery"  class="thickbox" title="<?php echo $title; ?>">
		<img src="<?php echo ($imageT[0]); ?>" alt="<?php echo $title; ?>" width="<?php echo ($imageT[1]); ?>" height="<?php echo ($imageT[2]); ?>" />
		</a></li>
<?php	} //end foreach
} //end if ?>
<?php endwhile; endif; ?>
</ul>

get_childrenで投稿に添付された全ての画像ファイルを配列で取得します。

is_arrayは$attachmentsが配列かどうかを検査します。

foreach($attachments as $attachment){〜}

foreachで、$attachmentsの配列分だけ処理を繰り返します。つまり、投稿に添付された画像を全て出力しています。

wp_get_attachment_image_srcで、画像サイズ大とサムネイルの情報(URL、width、height)をそれぞれ配列で取得します。

コメントを残す

人気の記事