get_post_meta() の使い方|説明・引数・注意点

説明

get_post_meta() は、投稿に保存されたカスタムフィールド(メタデータ)の値を取得する関数です。

基本構文

get_post_meta( int $post_id, string $key = '', bool $single = false ): mixed

引数

  • $post_id:投稿ID
  • $key:メタキー(省略すると全てのメタを返す)
  • $single:true で単一の値、false で配列

戻り値

$single が true なら値、false なら配列。

使い方(サンプル)

echo esc_html( get_post_meta( get_the_ID(), 'price', true ) );

注意点

  • $single を true にし忘れると、値が配列で返ってきます。
  • 存在しないキーでは、$single が true のとき空文字が返ります。
  • アンダースコアで始まるキー(例:_edit_lock)は、管理画面のカスタムフィールド欄に表示されません。

実務での使いどころ

  • カスタムフィールドの値を、テンプレートで取り出すとき。
  • メタボックスで保存した値を、表示や処理に使うとき。
  • ACFを使わない、軽量なカスタムフィールドの読み出し。

よくあるミスと対処

  • 第3引数 $single を指定せず、配列が返ってくる。既定は false で、値は配列で返ります。echo すると「Array」と表示されます。
  • ループの外で、投稿IDを渡していない。ループ外では、get_the_ID() などでIDを渡します。
  • 値が存在しないときの戻り値を考えていない。$single が true のときは空文字、false のときは空の配列が返ります。
  • _ で始まるキー名を使い、管理画面のカスタムフィールド欄に表示されず戸惑う。_ で始まるキーは、値の取得はできますが、カスタムフィールド欄には表示されません。

NG例

echo get_post_meta( $post_id, 'price' ); // 「Array」と表示される

OK例

echo esc_html( get_post_meta( $post_id, 'price', true ) );

使い分け早見表

関数 特徴
get_post_meta() WordPress本体の関数。保存された値を、そのまま取得する
get_field()(ACF) ACFの関数。フィールドの種類に応じて、整形された値が返る

関連項目

update_post_meta()、add_post_meta()、delete_post_meta()、get_the_ID()

公式リファレンス:get_post_meta() | Function | WordPress Developer Resources

コメント

タイトルとURLをコピーしました