wp 投稿の画面最初の画像をアイキャッチ画像にする
2020年12月15日
kobayashi kenji atelierサイトトップページで各カテゴリーの最新記事の最初の画像をアイキャッチにして表示させる
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 = "ここには画像が無い時に表示される画像のURLを.jpg";
}
return $first_img;
}
出力させる場合のあれこれ
普通に呼び出す場合はこれだけ
<?php echo catch_that_image(); ?>
新着記事一覧等の場合は以下を
<ul> <?php if(have_posts()): while(have_posts()): the_post(); ?> <li> <a href="<?php the_permalink(); ?>" > <img src="<?php echo catch_that_image(); ?>" alt="" width="290" height="218" /> </a> <p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> </li> <?php endwhile; endif; ?> </ul>
更に今回役に立ったのが以下。指定したカテゴリーの新着投稿一覧から1件のみをパーマリンクなどせずにシンプルに画像のみ表示させた。
<ul>
<?php
$posts = get_posts('numberposts=3&category=4');
global $post;
?>
<?php if($posts): foreach($posts as $post): setup_postdata($post); ?>
<li>
<a href="<?php the_permalink(); ?>" >
<img src="<?php echo catch_that_image(); ?>" alt="" width="290" height="218" />
</a>
<p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p>
</li>
<?php endforeach; endif; ?>
</ul>
実装したコード
<div class="info-img">
<?php
$posts = get_posts('numberposts=1&category=13');
global $post;
?>
<?php
if($posts): foreach($posts as $post):
setup_postdata($post);
?>
<img src="<?php echo catch_that_image(); ?>" alt="" />
</div>
<?php endforeach; endif; ?>