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のデータベースを自動バックアップしてくれるプラグイン「WP-DB-Backup」

データベースのバックアップって、けっこう面倒なもの。 SQLについての知識が充分にあればそんなことはないのかも知れませんが、phpMyAdminを使うだけでもビクビクしている僕のような人にとって「デー …

no image

WordPress のビジュアルエディタでテーブル(表組み)の行を複製したり削除したりする方法。

WordPress のビジュアルエディタとテーブル(表組み)はどうも相性が悪いらしく、新規に追加できるようにするだけでも一工夫が必要でした(過去記事参照)。 で、編集するのもやっぱり一筋縄ではいかず、 …

no image

WordPress 2.6 で画像を挿入したら横幅が自動的に500pxになってしまう問題の解決方法。

ググればすぐ見つかるんですけど、一応メモ。 WordPress 2.6.5 の環境でアップロードした画像を投稿記事に挿入したところ、なぜか横幅の最大値が 500px になってしまうということがありまし …

no image

カテゴリーごとの日付アーカイブを表示する WordPress プラグイン – 「Archives for a category」

WordPress 標準のテンプレートタグを拡張して、カテゴリーごとの日付アーカイブへのリンクを表示できるようにしてくれるプラグインです。 日付アーカイブへのリンクを表示するとき、標準では下記のテンプ …

no image

WordPress 2.8.1 日本語版リリース。

気が付いたら全然更新してなかったので、ここらで軽めの話題を一つ……。 »WordPress | 日本語 » WordPress 2.8.1 日本語版リリースのお知らせ まぁ、そ …