アイキャッチ画像のURL情報だけを取得する記事を多くみつけたが、実はWordPress 4.4.0 からデフォルトでアイキャッチ画像のURL情報だけを取得するメソッドが用意されている。
the_post_thumbnail_url()
the_post_thumbnail_url() は、アイキャッチ画像のURLを表示する。取得ではなく、表示である点に注意。画像がない場合は、NULL が返却される。
引数をセットすることで異なる画像サイズのURLを表示することもできる。
引数がない場合や有効でない場合は、’full’ 扱い。
the_post_thumbnail_url('thumbnail');
the_post_thumbnail_url('medium');
the_post_thumbnail_url('large');
the_post_thumbnail_url('full');
実際の利用サンプル
<?php if(have_posts()): while(have_posts()): the_post(); ?>
<?php if (has_post_thumbnail()): ?>
<img src="<?php the_post_thumbnail_url("medium"); ?>">
<?php endif; ?>
<?php endwhile; endif; ?>
ちなみに、has_post_thumbnail() は、アイキャッチ画像があるか判別している。
どのようなケースか分からないが、アイキャッチ画像をセットしていないのに、has_post_thumbnail() が true となるケースがあった。とりあえず自分の場合は、下記のような記述で対応している。
<?php if(have_posts()): while(have_posts()): the_post(); ?>
<?php if (get_the_post_thumbnail_url()): ?>
<img src="<?php the_post_thumbnail_url("medium"); ?>">
<?php endif; ?>
<?php endwhile; endif; ?>
画像URLを「取得」する場合
表示ではなく取得したい場合、取得用のメソッド、get_the_post_thumbnail_url() が用意されている。が、引数をセットするとなぜか、false が返却されてしまう(WordPress 4.8 現在)。いずれ修正されると思われるが、それまでは、the_post_thumbnail_url() を上手に使うことにする。とりあえず、現在のバージョン4.8では、画像サイズをした画像URLの値での分岐処理するには適していない(まぁ、そんな利用シーンは自分の場合ではないから問題なし)。 WordPressのバージョン 5.9.2で、IDを指定して確認したところ、正常に機能していることを確認した。