制作記事 Web制作アプリケーションWordPressアイキャッチ画像のURL情報だけを知りたい → the_post_thumbnail_url()

アイキャッチ画像のURL情報だけを知りたい → the_post_thumbnail_url()

アイキャッチ画像の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を指定して確認したところ、正常に機能していることを確認した。