投稿にアイキャッチ画像があるかないかを判定した結果、真偽値(true / false)を返します。
has_post_thumbnail($post);このテンプレートタグは実行時に引数を1つ渡すことができます。
| 引数 | 必須/任意 | 引数に指定する内容 |
|---|---|---|
第1引数$post | 任意 | 判定したい投稿のID (整数) / オブジェクト初期値: 現在の投稿オブジェクト |
戻り値(返す値):真偽値(true / false)
下記例では、現在の投稿にサムネイルがあるかどうかを判定して、真偽値(true / false)を返します。
※引数に指定がないため、引数は初期値の「現在の投稿オブジェクト」になります。
has_post_thumbnail();下記例では、IDが30の投稿にサムネイルがあるかどうかを判定して、真偽値(true / false)を返します。
has_post_thumbnail(30);投稿の一覧表示で、サムネイルがあるかどうかを判定する際などによく使われます。戻り値が真偽値ですので、if分を使ってサムネイルの有無で条件分岐をすることができます。
下記例ではサムネイル画像が設定されていなければデフォルトのnoimage.jpg(テーマ直下のimgディレクトリにあるnoimage.jpg)を読み込みます。
<?php if (has_post_thumbnail()) : ?>
<?php the_post_thumbnail(); ?>
<?php else: ?>
<img src="<?php echo esc_url(get_theme_file_uri('/img/noimage.jpg')); ?>" alt="">
<?php endif; ?>home.phpやarchive.phpに下記のようにコードを書いて、サムネイル付き投稿の一覧を表示することができます。
<?php if (have_posts()) : ?>
<ul class="cards">
<?php while (have_posts()): ?>
<?php the_post(); ?>
<li class="cards__item card">
<a class="card__link" href="<?php the_permalink(); ?>">
<div class="card__data">
<div class="card__img">
<?php if (has_post_thumbnail()) : ?>
<?php the_post_thumbnail(); ?>
<?php else: ?>
<img src="<?php echo esc_url(get_theme_file_uri('/img/noimage.jpg')); ?>" alt="">
<?php endif; ?>
</div>
<div class="card__date"><?php echo get_the_date('') ?></div>
<div class="card__title"><?php the_title(); ?></div>
</div>
</a>
</li>
<?php endwhile; ?>
</ul>
<?php endif; ?>※当サイトでは初期値とデフォルト値の言葉の定義を区別せず、原則統一して初期値を採用しています。