1. WordPress

WordPressのget_post_meta関数でカスタムフィールドを取得する方法と活用例

Share

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取得したいメタキー(カスタムフィールド名)
$singletrue:単一の値を返す、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とキーを指定してカスタムフィールドの値を取得する関数
  • 単一の値か複数値かによって、$singletrue / false に使い分ける
  • 実用的なテンプレートやループ処理に応用できる

カスタムフィールドを使いこなせるようになると、WordPressサイトの表現力が格段に広がります。ぜひ自分のプロジェクトで試してみてください。