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

「あわせて読みたい」ブログパーツ追加。

他のブログでちょいちょい目にして気になっていた「あわせて読みたい」のブログパーツをサイドバーに追加しました。 このサイトに訪れる人がまだまだ非常に少ないので、どこまで正確なデータになるのか一抹の不安を …

no image

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

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

no image

WordPress のビジュアルエディタにテーブル(表組み)の追加・編集機能を付ける方法。

WordPress に標準で付いているビジュアルエディタには、テーブルの編集機能はありません。 既存のテーブルをいじったりすることはもちろん、新規に追加することすら不可。 HTML でガシガシ組める人 …

no image

WordCamp Kyoto 2009 が開催決定。

WordPress な人たちが一堂に会するイベント「WordCamp」の京都版、「WordCamp Kyoto 2009」が開催されます。 »WordCamp Kyoto 今回は 10 月 …

no image

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

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