説明
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

コメント