WordPressのカスタムフィールド機能を使えば、投稿やページに独自のデータを追加できます。
そのカスタムフィールドの値を取得する関数が get_post_meta()
です。
この記事では、get_post_meta()
の基本的な使い方から、応用例、よくあるミスまでを詳しく解説します。
目次
get_post_meta() とは?
get_post_meta()
は、投稿・ページ・カスタム投稿などに紐づいたカスタムフィールドの値を取得する関数です。
たとえば、「価格」「評価」「商品コード」など、標準では存在しない独自データを扱いたいときに便利です。
基本的な書き方
$value = get_post_meta( $post_id, $meta_key, $single );
パラメータ | 説明 |
---|---|
$post_id | 投稿またはページのID |
$meta_key | 取得したいメタキー(カスタムフィールド名) |
$single | true :単一の値を返す、false :配列で全ての値を返す |
例:特定の投稿に設定された「price」フィールドを取得
$price = get_post_meta( get_the_ID(), 'price', true );
echo '価格: ' . esc_html($price) . '円';
true
を指定することで、値が一つだけ返されます。
管理画面からカスタムフィールドを追加するには?
投稿編集画面で「表示オプション」→「カスタムフィールド」にチェックを入れると、手動でメタ情報を追加できます。
ただし、最近のブロックエディター(Gutenberg)では非表示になっていることもあるため、プラグイン(例:Advanced Custom Fields)を使うとより便利です。
配列で取得したい場合(複数値)
$values = get_post_meta( get_the_ID(), 'related_links', false );
foreach ( $values as $link ) {
echo '<p><a href="' . esc_url($link) . '">' . esc_html($link) . '</a></p>';
}
複数の同じキーを持つカスタムフィールド(例:チェックリストやリンク集)では、false
を指定して配列で取得します。
よくある使い方の例
商品データを表示するテンプレート
$product_code = get_post_meta( get_the_ID(), 'product_code', true );
$stock_status = get_post_meta( get_the_ID(), 'stock_status', true );
?>
<ul>
<li>商品コード: <?php echo esc_html($product_code); ?></li>
<li>在庫状況: <?php echo esc_html($stock_status); ?></li>
</ul>
管理画面でカスタムフィールドが見えない場合
Gutenberg(ブロックエディター)では、カスタムフィールドの入力欄が非表示のことがあります。対策:
- 「カスタムフィールド」メニューが表示されていない → 設定で有効化
- プラグイン(例:ACF)を導入して、UIから管理
get_post_meta() 使用時の注意点
注意点 | 解説 |
---|---|
値が存在しないと false や空文字が返る | 存在確認をしながら出力しましょう |
サニタイズを忘れずに | HTML出力する際は esc_html() や esc_attr() を使う |
投稿IDの指定ミス | ループ外では get_the_ID() は使えないので $post->ID を使う |
get_post_meta() を使った便利な機能例
- 関連記事のID一覧をメタに保存 → ループで関連記事表示
- 購入ボタンのリンク先URLを個別に設定
- サイト内のイベント投稿で、開催日時や場所を出力
まとめ
get_post_meta()
は投稿IDとキーを指定してカスタムフィールドの値を取得する関数- 単一の値か複数値かによって、
$single
をtrue
/false
に使い分ける - 実用的なテンプレートやループ処理に応用できる
カスタムフィールドを使いこなせるようになると、WordPressサイトの表現力が格段に広がります。ぜひ自分のプロジェクトで試してみてください。