以下の様なことがやりたかったのですが、先人の知恵通りだと上手くいかなかったので書き記しておきます。
やりたいこと
- アイキャッチ画像がある場合、アイキャッチ画像を表示する
- アイキャッチ画像がなく、記事内に画像がある場合、投稿記事内の最初の画像をアイキャッチ画像として表示する
- アイキャッチ画像がなく、記事内にも画像がない場合、予め用意しておいたサンプル画像を表示する
実際のコード
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);
if($output) {
$first_img = $matches [1] [0];
} else {
$first_img = get_template_directory_uri().'/assets/img/common/noimage.jpg';
}
return $first_img;
}
あお
‘/assets/img/common/noimage.jpg’の中身はご自身で設定したい画像のパスに変更してくださいね!
表示させたいphpファイルに記述
<?php if (has_post_thumbnail()): ?>
<?php the_post_thumbnail('thumbnail'); ?>
<?php else: ?>
<img src="<?php echo catch_that_image(); ?>" alt="">
<?php endif; ?>
参考になれば嬉しいです!
- PR