WordPress カスタムフィールドの使用

| カテゴリ:CMS, WordPress | コメント(0) | トラックバック(0)

Using Custom Fields << WordPress Codexの和訳かつ要約です。

WordPressには投稿者が投稿にカスタムフィールドを追加する機能があります。
この自由で不定な情報はメタデータとして知られています。メタデータは以下のような情報を含む事が可能です。

  • 気分:幸せ
  • 読んでいる本:シンデレラ
  • 聴いている曲:Rock Around the Clock
  • 気候:蒸し暑い

コードを追加すれば、投稿の公開期限を含めるなどの、より複雑な処理も可能です。

メタデータはkey/valueの組み合わせで操作されます。keyはメタデータ要素名です。valueは投稿に関連付けられた値です。

keyは投稿毎に1つ以上使用されます。例えば、あなたが2つの本を読んでいるのであれば、"reading"keyを2回使います。
投稿上では以下のように表示されます。

  • 読んでいる本:Calvin and Hobbis
  • 気分:Jolly and Happy

使い方

実際にやってみましょう。これから2つのカスタムフィールドを追加します。ひとつは「読んでいる本」、ひとつは「気分」です。

  1. 投稿を書いた後に、ページ内のカスタムフィールドのエリアに移動します。
  2. keyに"Currently Reading"と入力します。
  3. valueに本の題名を入れます。
  4. "Add Custom Field"をクリックします。

同じように「気分」を"Today's Mood"というkeyで追加したら、投稿を保存します。

次の投稿から、新しい本、気分をメタデータに追加できます。keyのプルダウンにkeyが追加されてます。

カスタムフィールドの表示

the_meta()テンプレートタグを使えば、それぞれの投稿にカスタムフィールド値をリスト形式で表示できます。このタグはThe Loopの中に置かれなければなりません。

カスタムフィールドのより進んだ使い方

カスタムフィールドの取得

get_post_meta()関数を使って、メタの値を取得できます。

get_post_meta($post_id, $key, $single);
  • $post_idは取得したいメタを持つ投稿のIDです。$post->IDを使えば投稿のIDを取得できます。
  • $keyは取得したいメタのkeyの文字列です。
  • $singleにはtrueもしくはfalseを入れます。trueであれば単一の文字列、falseであれば値の配列を返します。省略した場合falseです。

実行内容の詳細

PostMetaの情報は、$wpdb->postmetaという新しいテーブルに保存されています。このテーブルには4つのフィールドがあります。

  • meta_id : エントリーの個別ID
  • post_id : 関係する投稿のID
  • meta_key
  • meta_value

このテーブルからの値は、wp-blog-header.phpの中で、$posts配列の後の$post_meta_cacheという構造化された多次元配列に入れられます。$postsには現在のページを構築するための投稿の値のリストだけが含まれています。
例えば記事ID256の、"reading"というkeyの値を取得する場合は

$readinglist = $post_meta_cache[256]['reading'];

というようにします。$readinglistが配列という点に注意してください。

WordPress 2.1から、$post_meta_cacheにはデータが投入されません。メタの値は以下の関数で取得してください。

内部関数

これらの関数はループの中で使用される事を意図してます。返り値は全て配列です。

get_post_custom([$post_id])

$post_idを省略すると、現在の投稿。

$custom_fields = get_post_custom();
$my_custom_field = $custom_fields['my_custom_field'];
foreach ( $my_custom_field as $key => $value )
  echo $key . " => " . $value . "<br />";
get_post_custom_keys([$post_id])

$post_idを省略すると、現在の投稿。

$custom_field_keys = get_post_custom_keys();
foreach ( $custom_field_keys as $key => $value )
  echo $key . " => " . $value . "<br />";
get_post_custom_values($key[, $post_id])

$post_idを省略すると、現在の投稿。

$mykey_values = get_post_custom_values('my_key');
foreach ( $mykey_values as $key => $value ) {
  echo $key . " => " . $value . "<br />"; 
}

トラックバック(0)

トラックバックURL: http://tech.ludicmind.net/admin/mt-tb.cgi/10

コメントする

TwitThis

今読んでいる記事をTwitterに投稿