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; ?>