
get_post_thumbnail_id()とは?
get_post_thumbnail_id()
は、WordPressにおいて投稿・固定ページに設定された**アイキャッチ画像(サムネイル画像)**の「添付ファイルID(attachment ID)」を取得する関数です。画像自体を表示するのではなく、その画像を取得・処理するための「ID」を得る目的で使用されます。
get_post_thumbnail_id()の基本構文
get_post_thumbnail_id( int|WP_Post|null $post = null ): int|false
get_post_thumbnail_id()の引数
パラメータ | 説明 |
---|---|
$post | 投稿のID、または WP_Post オブジェクト。省略時は現在のグローバル投稿($post )が対象。 |
get_post_thumbnail_id()の戻り値
型 | 内容 |
---|---|
int | アイキャッチ画像の添付ファイルID(attachment ID) |
false | アイキャッチ画像が設定されていない場合 |
get_post_thumbnail_id()の使用目的
この関数を使う主な目的は以下のとおりです:
- 投稿に紐付けられたアイキャッチ画像の attachment ID を取得
wp_get_attachment_image()
やwp_get_attachment_url()
などと組み合わせてカスタム出力- 独自のサイズで画像を表示、または画像メタデータへアクセス
get_post_thumbnail_id()の使用例
1. 画像のURLを取得する
$post_id = get_the_ID();
$thumbnail_id = get_post_thumbnail_id( $post_id );
if ( $thumbnail_id ) {
$thumbnail_url = wp_get_attachment_url( $thumbnail_id );
echo '<img src="' . esc_url( $thumbnail_url ) . '" alt="">';
}
→ このように、get_post_thumbnail_id()
で取得したIDを使って wp_get_attachment_url()
で画像URLを取得できます。
2. 独自サイズで画像を表示
$thumbnail_id = get_post_thumbnail_id();
if ( $thumbnail_id ) {
echo wp_get_attachment_image( $thumbnail_id, 'medium_large' );
}
→ the_post_thumbnail()
ではなく、独自の画像表示処理を行いたい場合に便利です。
3. メタデータへアクセス
$thumbnail_id = get_post_thumbnail_id();
if ( $thumbnail_id ) {
$meta = wp_get_attachment_metadata( $thumbnail_id );
echo '<pre>' . print_r( $meta, true ) . '</pre>';
}
→ ファイルのサイズや向き、Exif情報などにアクセスしたい場合に使用。
よく使う関連関数との違い
関数名 | 説明 |
---|---|
has_post_thumbnail() | アイキャッチ画像の有無を true / false で返す |
the_post_thumbnail() | アイキャッチ画像を <img> タグで表示する |
get_the_post_thumbnail() | アイキャッチ画像の <img> タグを文字列として返す(出力はしない) |
get_post_thumbnail_id() | アイキャッチ画像の添付ファイルIDを取得する(表示しない) |
set_post_thumbnail() | 投稿にアイキャッチ画像を設定する(IDで指定) |
get_post_thumbnail_id()の注意点
1. サムネイル機能の有効化
使用する前に、テーマで以下の記述が functions.php
にあることを確認しましょう:
add_theme_support('post-thumbnails');
→ これがないと、そもそもアイキャッチ画像を設定できず、get_post_thumbnail_id()
も常に false
を返します。
2. 投稿IDを明示的に渡すと安全
テンプレート内では get_the_ID()
を使って明示的に投稿IDを取得・指定したほうが、誤動作が少なくなります。
get_post_thumbnail_id( get_the_ID() );
3. 添付ファイルIDの使い方を理解しておく
WordPressでは、アップロードされたメディアはすべて「添付ファイル(attachment)」として登録されます。このIDはデータベース上の wp_posts
テーブルに「post_type = ‘attachment’」として格納されている投稿と同様の構造を持ちます。
→ get_post_thumbnail_id()
が返すのはこの attachment の投稿IDです。
get_post_thumbnail_id()の応用例
1. アイキャッチ画像の代わりに最初の画像を表示
$thumb_id = get_post_thumbnail_id();
if ( $thumb_id ) {
echo wp_get_attachment_image( $thumb_id, 'medium' );
} else {
// 本文から最初の画像を取得(簡易例)
if ( preg_match( '/<img.+src=[\'"](?P<src>.+?)[\'"].*>/i', get_the_content(), $image ) ) {
echo '<img src="' . esc_url( $image['src'] ) . '" alt="">';
}
}
→ サムネイルが設定されていないときに本文の画像を表示する補助処理。
開発者向けTips
- REST APIやAjax処理 など、テーマ外部でサムネイル情報が必要なときに、
get_post_thumbnail_id()
を使えば必要なデータを抽出できる。 - 画像のサイズバリエーション を切り替える処理にも有用。
add_image_size()
でサイズを登録しておけば、IDを使って任意サイズを表示できる。 - 管理画面のカスタム表示(例:カスタム投稿タイプの一覧画面でアイキャッチを表示)にも応用可能。
get_post_thumbnail_id()のまとめ
get_post_thumbnail_id()
は、アイキャッチ画像の添付ファイルID を取得する関数。- 単独では画像を表示しないが、他の関数と組み合わせることで、柔軟な画像処理が可能になる。
- 「画像のURL取得」「サイズ変更」「メタデータの参照」など、細かい制御をしたい場合に非常に有用。
has_post_thumbnail()
との併用で、画像の有無による分岐処理も実現しやすい。