the_post_thumbnail()

the_post_thumbnail()
目次

the_post_thumbnail()とは?

the_post_thumbnail() は、WordPress におけるアイキャッチ画像(サムネイル画像)を表示するためのテンプレートタグです。主にテーマファイル内で使用され、投稿や固定ページに設定されたアイキャッチ画像を HTML の <img> タグとして出力します。

この関数は、表示の自由度と簡潔さを兼ね備えており、カスタムサイズの指定や HTML クラスの追加など、柔軟なカスタマイズが可能です。

the_post_thumbnail()の基本構文

the_post_thumbnail( string|array $size = 'post-thumbnail', string|array $attr = '' )

the_post_thumbnail()の引数

引数説明
$sizestring または array出力する画像サイズ(例:'thumbnail', 'medium', 'large', 'full' など)または [幅, 高さ] の配列
$attrstring または array<img> タグに追加する HTML 属性(例:class, alt, loading など)

the_post_thumbnail()の戻り値

なし(直接 <img> タグを出力)

the_post_thumbnail()の使い方の例

1. デフォルトのサムネイルを表示

if ( has_post_thumbnail() ) {
    the_post_thumbnail();
}

この場合、テーマ側で指定されている 'post-thumbnail' サイズ(通常は medium)で画像が表示されます。

2. サイズを指定して表示

the_post_thumbnail('large');     // large サイズで表示
the_post_thumbnail('thumbnail'); // thumbnail サイズで表示
the_post_thumbnail('full');      // 元サイズで表示

3. 任意サイズ(配列で指定)

the_post_thumbnail([300, 200]);

→ 幅300px、高さ200pxのサイズに切り抜かれた画像を表示します。

4. HTML 属性を追加

the_post_thumbnail('medium', ['class' => 'custom-class', 'alt' => '代替テキスト']);

→ 出力される <img> タグに classalt を付与できます。

the_post_thumbnail()の出力例

以下のような HTML が出力されます:

<img width="600" height="400" src="https://example.com/wp-content/uploads/2023/01/sample.jpg" class="attachment-large size-large wp-post-image" alt="" />

※ クラス名には自動的に attachment-サイズ名size-サイズ名wp-post-image が付与されます。

よく使うサイズ指定

WordPress には以下の標準画像サイズがあります(functions.php で変更可):

サイズ名初期設定のサイズ用途
'thumbnail'150×150(トリミングあり)一覧表示などの小サイズ
'medium'300×300(トリミングなし)記事本文内の画像など
'large'1024×1024(トリミングなし)ヘッダー画像、記事上部など
'full'アップロード元の元画像サイズ最大サイズでの表示
'post-thumbnail'テーマで使用する代表画像サイズテーマで自由に設定可能

独自サイズの登録と利用

1. サイズの登録(functions.php

add_image_size( 'custom-thumb', 400, 250, true ); // true = トリミングあり

2. 表示時に使う

the_post_thumbnail('custom-thumb');

the_post_thumbnail()の注意点

1. 使用前にアイキャッチ画像機能の有効化が必要

functions.php に以下を追加:

add_theme_support('post-thumbnails');

2. アイキャッチ画像が未設定の場合は何も出力されない

そのため、通常は has_post_thumbnail() と組み合わせて使います:

if ( has_post_thumbnail() ) {
    the_post_thumbnail('medium');
}

the_post_thumbnail()の応用例

1. 一覧ページでアイキャッチとタイトルを表示

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

2. srcset によるレスポンシブ画像

WordPressはデフォルトで srcset 属性を自動生成します:

<img src="image-300.jpg"
     srcset="image-300.jpg 300w, image-600.jpg 600w, image-900.jpg 900w"
     sizes="(max-width: 600px) 100vw, 600px" />

→ これにより、デバイスに応じて最適なサイズの画像が自動で表示されます。

the_post_thumbnail()のよくある間違いと対処法

問題原因解決策
画像が表示されないアイキャッチ画像が設定されていないhas_post_thumbnail() を使って確認
サイズがおかしい指定サイズが未登録add_image_size() で登録し、regenerate thumbnails プラグインで再生成
alt 属性が空になる明示的に指定していない$attr 配列で 'alt' => '説明文' を追加

関連関数との違い

関数名説明
the_post_thumbnail()画像をHTMLで出力する
get_the_post_thumbnail()画像のHTMLを文字列として返す(出力はしない)
get_post_thumbnail_id()アイキャッチ画像の attachment ID を取得する
has_post_thumbnail()アイキャッチ画像が設定されているか判定する
set_post_thumbnail()投稿にアイキャッチ画像を設定する(IDで)

the_post_thumbnail()のまとめ

  • the_post_thumbnail() は、アイキャッチ画像を HTML の <img> タグで出力するテンプレートタグ。
  • サイズや属性の指定により柔軟なカスタマイズが可能。
  • 使用前に add_theme_support('post-thumbnails') が必要。
  • has_post_thumbnail() との組み合わせで安全に使用。
  • add_image_size() によって独自の画像サイズも利用可能。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次