[WP]WordPress2.5~2.6 サムネイル画像を取得して表示

テンプレート内でサムネイルを表示する方法について。
サムネイル(中)をカテゴリーで表示したいと思ったとき、自動でサムネイル作られるならそれ表示するようにすればいいじゃん、と思いませんか。

でもwordpress2.5~2.6ではthumbnailが小、mediumが中という分け方をしてるが、ファイル名にはなぜかファイルサイズが付く。
ギャラリーというサムネイル自動表示の新機能があるんだけど、ショートコードだからテンプレートのソースコードでは使えない。
ファイル名は*-thumbnail.jpgとか*-medium.jpgとかでいいじゃん、という気がする。
というかむしろそちらの方が便利だと思う。ので修正されないかなあ…(期待)

自動作成された、これら名前のバラバラなサムネイルをテンプレートで自動取得する方法があった。

media.phpの関数を使うと、ループ内でサムネイルを表示するようにすることが出来るようになる。
ネタ元:WordPress › Support » 2.5 How to create a category template for a gallery ?
もともとはgallery機能で使われてる関数らしい。

<?php $attachments = get_children(array('post_parent' => get_the_ID(), 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order'));
        if ( ! is_array($attachments) ) continue;
        $count = count($attachments);
        $first_attachment = array_shift($attachments); ?>
<?php echo wp_get_attachment_image($first_attachment->ID); ?>

上のコードではサムネイル(小)のイメージタグだけ出力される。

小サイズのURLだけ▼

$img_url = wp_get_attachment_thumb_url(intval($first_attachment->ID));
print($img_url);

中サイズを出力▼

<?php $attachments = get_children(array('post_parent' => get_the_ID(), 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order'));
	if (  is_array($attachments) ){
	$count = count($attachments);
	$first_attachment = array_shift($attachments); 
	$image=  image_downsize(intval($first_attachment->ID));
	list($src, $width, $height) = $image;
	$hwstring = image_hwstring($width, $height);
	if ( is_array($size) )
		$size = join('x', $size);
	echo '<img src="'.attribute_escape($src).'" '.$hwstring.'class="attachment-'.attribute_escape($size).'" />';
	} ?>

フルサイズのURL▼

<?php $attachments = get_children(array('post_parent' => get_the_ID(), 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order'));
	if (  is_array($attachments) ){
	$count = count($attachments);
	$first_attachment = array_shift($attachments); 
	$img_url = wp_get_attachment_url(intval($first_attachment->ID));
	print($img_url);
}?>

でもこれリサイズが再計算なら設定変えたら表示されなくなりそうだ。。

Youこっちも見て行きなYO!

1件のコメント

  1. 大サイズを出力するにはどのように書けばいいのでしょうか?
    教えて下さい

    Reply
  2. こんばんわ。
    サムネイルにaltを入れるには、どうしたらよいでしょうか?

    indexページに、サムネイルをたくさん並べるようにしたので、
    ものすごい数のエラーが出てしまうので、回避したいと思います。
    もしよろしければ教えてください。

    Reply
  3. ろばこさん>

    中サイズのソースでしょうか?
    最後の方にあるechoから始まる行にaltを追加すれば直ると思います。

    echo '<img src="'.attribute_escape($src).'" '.$hwstring.'class="attachment-'.attribute_escape($size).'" alt="" />';

    Reply

Leave a Comment.