get_the_post_thumbnail()

get_the_post_thumbnail()
目次

get_the_post_thumbnail()とは?

get_the_post_thumbnail() は、WordPressで投稿・固定ページに設定されたアイキャッチ画像(サムネイル画像)を HTML の <img> タグ形式で取得する関数です。the_post_thumbnail() と違って出力はせず、HTMLタグの文字列を返すため、変数に格納したり、独自のレイアウトに組み込んだりするのに便利です。

get_the_post_thumbnail()の基本構文

get_the_post_thumbnail( int|WP_Post|null $post = null, string|array $size = 'post-thumbnail', string|array $attr = '' ): string

get_the_post_thumbnail()の引数

引数説明
$postint | WP_Post | nullアイキャッチ画像を取得したい投稿のIDまたは投稿オブジェクト。省略時は現在の投稿。
$sizestring | array表示する画像サイズ。例:'thumbnail', 'medium', 'large', 'full' または [幅, 高さ] の配列。
$attrstring | array<img> タグに追加するHTML属性(alt, class, loading など)。

get_the_post_thumbnail()の戻り値

  • 文字列(string
    <img> タグを含むHTML文字列を返します。
    → アイキャッチが設定されていない場合は空文字('')を返します。

get_the_post_thumbnail()の使用例

1. 画像タグを変数として取得し、任意の場所で表示

$thumb = get_the_post_thumbnail( get_the_ID(), 'medium' );

if ( $thumb ) {
    echo '<div class="thumbnail-wrap">' . $thumb . '</div>';
}

→ HTML出力を制御したいときに非常に便利です。

2. HTML属性を指定して取得

echo get_the_post_thumbnail(
    get_the_ID(),
    'large',
    [ 'class' => 'custom-thumb', 'alt' => '記事のイメージ画像' ]
);

→ 画像にカスタムクラスや代替テキストなどを追加可能。

3. サイズを配列で指定

echo get_the_post_thumbnail( null, [400, 300] );

→ 幅400px、高さ300pxでトリミングされた画像を取得します。

the_post_thumbnail() との違い

比較項目get_the_post_thumbnail()the_post_thumbnail()
出力方式HTML文字列を返す(出力しない)HTMLをそのまま出力
使用目的文字列として加工・組み込みたいとき簡単に画像を表示したいとき
用途テンプレート内で自由な構造に組み込みシンプルにアイキャッチ画像を出力

よく使うサイズ一覧(デフォルト)

WordPressには以下の標準サイズがあります。サイズはテーマやプラグインによって変更されている可能性があります。

サイズ名デフォルトサイズ用途
'thumbnail'150×150(トリミングあり)一覧などの小さな表示
'medium'300×300(トリミングなし)記事中などの汎用表示
'large'1024×1024(トリミングなし)メインビジュアルなど
'full'アップロードした元画像高解像度表示

独自サイズの登録と使用

1. functions.php で独自サイズを登録

add_image_size( 'custom-thumb', 400, 250, true );

2. 呼び出し時に利用

echo get_the_post_thumbnail( get_the_ID(), 'custom-thumb' );

get_the_post_thumbnail()の応用例

1. アイキャッチ画像があるときだけ枠付きで表示

$img = get_the_post_thumbnail( get_the_ID(), 'medium' );

if ( $img ) {
    echo '<div class="thumbnail-box">' . $img . '</div>';
}

the_post_thumbnail() では出力済みになるため、こういった使い方ができません。

2. 一覧ページで画像+タイトルを表示

<?php if ( have_posts() ) : ?>
  <?php while ( have_posts() ) : the_post(); ?>
    <div class="post-item">
      <a href="<?php the_permalink(); ?>">
        <?php echo get_the_post_thumbnail( get_the_ID(), 'thumbnail' ); ?>
        <h2><?php the_title(); ?></h2>
      </a>
    </div>
  <?php endwhile; ?>
<?php endif; ?>

→ テンプレート構造に画像を挿入しやすくなります。

画像が表示されないときのチェックポイント

問題原因解決策
空文字が返るアイキャッチ未設定has_post_thumbnail() で事前チェックする
サイズが適切でないadd_image_size() で未登録サイズを登録し直し、サムネイルを再生成(Regenerate Thumbnailsプラグイン)
HTMLが出力されないecho を忘れているecho get_the_post_thumbnail() を使う

関連関数との比較

関数名説明
get_the_post_thumbnail()アイキャッチ画像のHTMLを返す
the_post_thumbnail()アイキャッチ画像のHTMLを出力する
get_post_thumbnail_id()アイキャッチ画像の添付ファイルIDを返す(表示しない)
wp_get_attachment_url()添付ファイルIDから画像URLを取得
wp_get_attachment_image()添付ファイルIDからHTMLを生成して返す

SEO対策としての使い方

HTML属性で alt を適切に指定することは、画像SEOにとって重要です。

echo get_the_post_thumbnail( get_the_ID(), 'medium', [ 'alt' => get_the_title() ] );

→ タイトルを代替テキストとして設定することで、アクセシビリティ向上にも貢献します。

get_the_post_thumbnail()のまとめ

  • get_the_post_thumbnail() はアイキャッチ画像を <img> タグとして文字列で返す関数。
  • テンプレートの中で柔軟に HTML に組み込む場面で活躍。
  • サイズやHTML属性の指定が可能。
  • has_post_thumbnail() と組み合わせることで安全に使用可能。
  • 表示ではなく取得したいときは get_the_post_thumbnail()、そのまま出力したいときは the_post_thumbnail()

テンプレートの構造を細かく調整したいテーマ開発者にとって、get_the_post_thumbnail() は非常に便利な関数です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

初めてホームページを作成したのは1996年。
2000年よりフリーランスで主に中小企業、学校、各種公的団体、個人事業主のWordPressを活用したホームページ制作を行っています。WordPressテーマはそれぞれのクライアントに合わせて作成しています。
WordPressを活用したサイト運営のための情報発信をしていきます。

目次