• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

関数リファレンス/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 だけが設定されている場合、その投稿に関するすべてのカスタムフィールドの値を配列として返します。
  • $singlefalse に設定されているか、何も設定しなかった場合、関数は指定したキーを持つすべての値からなる配列を返します。
  • $singletrue に設定された場合、関数は指定されたキーを持つ最初の値を返します(配列ではありません)。
  • もしも関数が返す値がなかった場合、空の配列を返します。$singletrue に設定されていた場合、空の文字列を返します。

用例

デフォルトでの使用

全てのキーから値を取得する:

<?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最新版との差分