カスタムフィールドを使わずにアーカイブに画像を表示
カテゴリー一覧や月別アーカイブのページに、エントリ中の画像を表示させたいなと思っておりまして、ワードプレスのカスタムフィールを使用して表示させたい画像を指定するなどしてソレを実現する方法は色々あるようなのですが、その方法だと過去記事にソレを反映させるのが面倒なので躊躇しておりました。そんなトコロに下記のエントリを拝見。
記事中の最初の画像を自動検出して、表示する方法
やりたかったあの機能を実現する、WordPress 中級者必見のテーマカスタマイズ6個 :: gerenuk.crazyphoto.org/
上記ページの方法で有ればカスタムフィールドにイチイチ記述を加える必要は無く、まずfunctions.phpに、
function catch_that_image() {
global $post, $posts;
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$first_img = $matches [1] [0];
if(empty($first_img)){ //Defines a default image
$first_img = "/images/default.jpg";
}
return $first_img;
}
っと記述し、
※/images/default.jpgの部分は自分の環境に合わせて変更。
テンプレートの画像を表示させたい部分に下記のコードを記述するだけでOK。
<img src="<?php echo catch_that_image(); ?>" />
でもって、以上の内容によってカテゴリーとかアーカイブページに画像を表示させた状態が初めの画像。ただコノ方法ですと文字通りエントリに表示させている一番目の画像そのモノを取得しますので、ワタシのようにあまりサムネイルを使っていないとチョット問題と言うか、好ましくない面が生じてしまう面はあるけれども、ソレはワタシの力不足と言うコトで(^^; エントリにサムネイルが無くても、サムネイルさえ作っていればソレを取得出来れば良いのですが・・・。phpの勉強しないとなりませんね・・・
何はともあれ、コノ方法を活かすようにブログを作っておけば、カスタムフィールドを使う方法よりも更新時の手間は確実に減らせますのでありがたいトコロです。この方法を紹介して下さったリンク先ブログ管理者さんに感謝です♪ また、他の内容も非常に参考になりますのでワードプレスを利用されているカタは是非リンク先エントリをご確認下さい。








