btmup Blog

Web 制作のことを中心に、ちょっとした Tips などを掲載しています。「自分用メモ」が基本スタンス。

WordPress

WordPress で投稿の添付画像を取得・表示するためにテンプレートに書くプログラムなど。

投稿日:

以前、とある案件で WordPress を導入したとき、投稿の添付画像を表示する機能を導入しました。
ヒーヒー言いながら作ったことを思い出しますね……。

で、今回また別の案件で使うことになったので、その部分だけエントリーとして残しておきます。
せっかくの資源は使い回さないと、もったいないですからねぇ。
リサイクルリサイクル。

うろ覚えなので、とりあえずコードだけ載せときます。
思い出したり気が向いたら解説する……かも。

<?php while (have_posts()) : the_post(); ?>
<?php
$files = get_children("post_parent=$id&amp;post_type=attachment&amp;post_mime_type=image");
if (empty($files)){
	print "none";
}else{
	$keys = array_keys($files);
        $lastkeys = array_pop($keys);
        $num=$lastkeys;
        $thumb=wp_get_attachment_image_src($num,'medium');
		print '<img src="' . $thumb[0] . '" width="' . $thumb[1] . '" height="' . $thumb[2] . '" alt="' . $post->post_title . 'の画像">' . "n";
}
?>
<?php endwhile; ?>

一応、現時点で覚えていることを書いておくと、

  • 「get_children」で投稿画像を取得することを設定
  • それを基に最新版の投稿を取得
  • 「wp_get_attachment_image_src」で添付画像を取得、配列に格納
  • 配列から画像のパスと幅と高さを取り出し

って感じですかね。たぶん……。

「wp_get_attachment_image_src」の第二引数が、取得する画像のサイズです。
(サムネイル:「thumbnail」、中サイズ:「midium」、大サイズ:「large」、フルサイズ:「full」)

»Function Reference/wp get attachment image src « WordPress Codex
»関数リファレンス/get children – WordPress Codex 日本語版

「get_children」のページにサンプルコードが載ってるんですが、添付画像を取得するだけならこれで充分なはずなんですよね。
というか、それの方が間違いなく簡単なんじゃないかと思うんやけどなぁ……。
これじゃしたいことができないから自分で書いたはずなんですけど、何がしたかったんでしょうか……。
投稿タイトルの取得とかかな?
まぁ、何かの役に立つかも知れないのでとりあえず掲載しときます。







-WordPress
-, , , ,

執筆者:


  1. osamuya より:

    通りすがりの者ですみません。いろいろ探しまわっているのですが、kbysbtmupさんが一番ちゃんと書かれていて参考にさせて頂きました。ありがとうございます。
    ついては、1つ質問があるのですが、
    投稿画像のサムネイルから投稿記事にリンクしたいと考えているのですが、permalinkを取得するために、
    <a href="”>…をループの中に組み込んでいるのですが、画像を投稿していない記事のpermalinkも取得してしまいます。wp_get_atachment_image_src();からは画像を投稿した記事のURLは取得できないようですし、いずれにしろループの一番外側でpermalinkを取得しないといけない感じになっています。画像が投稿されていない記事はスキップしたいのですが、どのようにやればよいかご存知でしょうか?
    もし知っていましたらご教授願います。いろいろやっているのですが、今の私には知識不足で難しい限りです。

    通りすがりの者が不躾に申し訳ありませんが、お時間ありましたらよろしくお願いします。

  2. osamuya より:

    追伸:失敗しているコードです。

    <a href="”> //ここが全部の記事に出てきてしまいます。投稿画像がない場合はスキップしたいのですが…。。。
    <?php
    $files = get_children("post_parent=$id&post_type=attachment&post_mime_type=image");
    if (empty($files)){
    continue; //ここでスキップしても先のが残ってしまうのです。
    }else{
    $keys = array_keys($files);
    $lastkeys = array_pop($keys);
    $num=$lastkeys;
    $thumb=wp_get_attachment_image_src($num,’thumbnail’);
    print ‘post_title . ‘の画像” title=”‘.$post->blog_title.'”>’ . “n”;
    }
    ?>

comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

WordPressで作業中「このページから移動します。よろしいですか?」というメッセージが表示される

最近、WordPressで作業しているときにこんなメッセージ(アラーム)が表示されることがあります。 確認 このページから移動します。よろしいですか? 他のページへ移動すると編集データは破棄されます。 …

no image

WordPress のビジュアルエディタで文字サイズを変更する方法。

なんか最近、ビジュアルエディタの話題ばっかりやなぁ。 ……ま、いっか。 今回は、文字サイズの変更方法です。 WordPress 標準のビジュアルエディタには、文字の色を変えたり強調表示(<str …

no image

WordPress 2.7 日本語版リリース。

先週の英語版に続いて日本語版が正式にリリースされました。 (相変わらずダッシュボードのメッセージは環境によって出たり出なかったりするんですけど) とりあえずテスト用の環境でアップグレード。 ちょちょっ …

no image

WordCamp 関西懇親会開催。

WordCamp Tokyo 2009 が 4 月 12 日(日)に開催されますが、それに伴って関西でも懇親会が開かれるそうです。 »WordCamp Japan » Word …

no image

query_posts() で指定した条件をクリアする方法

データベースからコンテンツを取得するときに、その条件などを指定する「query_posts()」。 非常に便利、というか「使わないとやってられん」的な超定番関数です。 この query_posts() …