
目次
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()の引数
引数 | 型 | 説明 |
---|---|---|
$post | int | WP_Post | null | アイキャッチ画像を取得したい投稿のIDまたは投稿オブジェクト。省略時は現在の投稿。 |
$size | string | array | 表示する画像サイズ。例:'thumbnail' , 'medium' , 'large' , 'full' または [幅, 高さ] の配列。 |
$attr | string | 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()
は非常に便利な関数です。