当サイト、Codex 日本語版は今後積極的な更新は行わない予定です。後継となる新ユーザーマニュアルは、https://ja.wordpress.org/support/ にあります。
万が一、当サイトで重大な問題を発見した際などは、フォーラムや WordSlack #docs チャンネルでお知らせください。</p>
万が一、当サイトで重大な問題を発見した際などは、フォーラムや WordSlack #docs チャンネルでお知らせください。</p>
関数リファレンス/get post meta
提供: WordPress Codex 日本語版
< 関数リファレンス
目次
概要
この関数は特定の投稿の特定のキーからカスタムフィールドの値を取得します。すべてのカスタムフィールド値を取得するには get_post_custom() を使うとよいでしょう。update_post_meta() や delete_post_meta()、add_post_meta()も参照してください。
使い方
<?php $meta_values = get_post_meta($post_id, $key, $single); ?>
パラメータ
- $post_id
- (整数) (必須) カスタムフィールドを取得したい投稿の ID。ループ内で投稿の ID を取得するには get_the_ID() を、サブループ内では投稿オブジェクトの ID プロパティ(例: $my_post_object->ID)を使用してください。グローバルの $post オブジェクトの ID プロパティ(例: $post->ID)を使うこともできますが、これは常にあなたが意図したものとは限りません。
- 初期値: なし
- $key
- (文字列) (オプション) 取得したい値のキー名の文字列。
- 初期値: ''
- $single
- (真偽値) (オプション) true をセットした場合、文字列として単一の結果を返します。false または値をセットしなかった場合、関数はカスタムフィールドの配列を返します。これは、配列がシリアル化された文字列として格納されている場合、あまり直感的ではありません。例えば、この関数でシリアル化された配列を取得した場合、$single を true にセットすると非シリアル化された配列が返されます。false または 値をセットしなかった場合、一つの要素からなる配列が返ってきて、インデックス 0 の値はシリアル化された文字列となります。
- 初期値: false
戻り値
- $id だけが設定されている場合、その投稿に関するすべてのカスタムフィールドの値を配列として返します。
- $single が false に設定されているか、何も設定しなかった場合、関数は指定したキーを持つすべての値からなる配列を返します。
- $single が true に設定された場合、関数は指定されたキーを持つ最初の値を返します(配列ではありません)。
- もしも関数が返す値がなかった場合、空の配列を返します。$single が true に設定されていた場合、空の文字列を返します。
用例
デフォルトでの使用
全てのキーから値を取得する:
<?php $meta = get_post_meta( get_the_ID() ); ?>
一つのキーから値を取得する:
<?php $key_1_value = get_post_meta( 76, 'key_1', true ); ?>
ループ内で、与えられたキーの最初の値だけを取得する
<?php $key_1_value = get_post_meta( get_the_ID(), 'key_1', true ); // カスタムフィールドが値を持つかチェック if ( ! empty( $key_1_value ) ) { echo $key_1_value; } ?>
より詳しい例は、post_meta 関数の例 /en を参照してください。
カスタムフィールドからサムネイル URL を取得する
WordPress ループの中では、次のようなコードを用いてカスタムフィールドを取得します。この例では、サムネイルイメージの URL が「thumb」という名でカスタムフィールドにあります。
<?php if ( get_post_meta( get_the_ID(), 'thumb', true ) ) : ?> <a href="<?php the_permalink() ?>" rel="bookmark"> <img class="thumb" src="<?php echo get_post_meta( get_the_ID(), 'thumb', true ) ?>" alt="<?php the_title(); ?>" /> </a> <?php endif; ?>
参考
- もしデータベースの照合順序が大文字小文字を区別しない(照合順序名に _ci が付く)場合、update_post_meta()、delete_post_meta()、get_posts() は大文字と小文字のキーを区別せずに、レコードを更新・削除・クエリします。しかし get_post_meta() は大文字・小文字を区別する場合があります。これは WordPress のキャッシュによるものです。詳しくは https://core.trac.wordpress.org/ticket/18210 を参照してください。大文字・小文字を混ぜないよう、気をつけてください。
- 内部で get_metadata() を使ってカスタムフィールドを取得します。
更新履歴
- 新規導入: 1.5.0
ソースコード
get_post_meta() は wp-includes/post.php
にあります。
関係する関数
カスタムフィールド: the_meta(), get_post_meta(), add_post_meta(), update_post_meta(), delete_post_meta(), get_post_custom(), get_post_custom_values(), get_post_custom_keys() (post_meta 関数の例 /en も参照)
最新英語版: WordPress Codex » Function_Reference/get_post_meta (最新版との差分)