※以前の記述では記事投稿時にアップロードした1番目の画像が取得されるため、
その画像を記事内で使用しなくても「最初の画像」と認識されてしまう。
こちらは記事内に張り付けてある最初の画像を取得する方法
function.phpに以下を記述
//投稿記事の最初の画像のサムネイル -------------------------------------------------------
function my_first_image_thumb(){
global $post;
$img_url = '';
//デフォルト画像の設定
$defaute_url = get_stylesheet_directory_uri(). '/images/default.png';
//最初の画像を取得してIDを取得
preg_match_all('/<img.+?class=".+?wp-image-(.+).*?".*?>/i', $post->post_content, $matches);
if(isset($matches[1][0])){
$img_id = ($matches[1][0]);
}
//最初の画像があれば分岐
if(!empty($img_id)){
//最初の画像IDからサムネイルのパスを取得してセット
$img_url = my_wp_get_attachment_medium_url($img_id);
} else {
//最初の画像がない場合、デフォルト画像のパスをセット
$img_url = $defaute_url;
}
return $img_url;
}
//画像IDからサムネイルサイズのパスを取得
function my_wp_get_attachment_medium_url( $id ) {
$thumbnail_array = image_downsize( $id, 'thumbnail' );
$thumbnail_path = $thumbnail_array[0];
return $thumbnail_path;
}
テンプレート内に以下を記述
※リストタグで最新の記事を5件表示させる例
<ul class="sp_list">
<?php $paged = get_query_var('paged'); ?>
<?php query_posts("posts_per_page=5&paged=$paged"); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<li class="clearfix"><a href="<?php the_permalink() ?>"><span class="listImg"><img src="<?php echo my_first_image_thumb(); ?>"></span><span class="listTitle"><?php the_title(); ?></span></a></li>
<?php endwhile; else: //記事が無い場合 ?>
<li><< イベント準備中です >></li>
<?php endif; wp_reset_query(); //クエリのリセット ?>
</ul>