- 赤色のリンクは、まだ日本語Codex に存在しないページ・画像です。英語版と併せてご覧ください。(詳細)
- この Wiki はいつでも誰でも編集できます。ログインアカウントの取得からどうぞ :)
- 5月23日に MySQL 4.0 → 5 へ移行しました。動作不良等があればご一報ください (連絡先)
カスタムフィールドの使い方
出典: WordPress Codex 日本語版
このページ「カスタムフィールドの使い方」は 情報が古くなっている可能性があります。最新版(英語)も合わせてご覧ください。最新に更新してくださる協力者を求めています。
目次 |
WordPressには、投稿者が記事に「カスタムフィールド」を追加できる機能があります。この任意の情報は「メタデータ」と呼ばれており、たとえば以下のような情報を含めることができます。
- 現在のムード: 幸せいっぱい
- 現在読んでいる本: 星の王子様
- 現在のBGM: Lovers Who Uncover by The Little Ones
- 現在の天気: 晴れ
さらに、ちょっとしたコードを付け加えるだけで、このメタデータに記事の表示期限を付け加えたりすることも可能です。
メタデータは「キー」と、その「値」の組み合わせからなっています。「キー」は、メタデータ要素の名称のことを指します。「値」は、その要素に対応する情報を指します。一般的には、固定された「キー」に対し、記事によって異なる「値」を記入します。
また、ひとつの記事で、複数のキーを使用することもできます。例えば現在読んでいる本が2冊ある場合、「現在読んでいる本」というキーを2度使い、それぞれに対し1冊の本の題名を記入すればよいのです。
このようにカスタムフィールドを記入した場合、記事中には以下のように表示されます。
- 現在読んでいる本: 星の王子様
- 現在の天気: 晴れ
使い方
上記の例に基づいて、実際にカスタムフィールドを使ってみましょう。ここでは、「現在読んでいる本」と、「現在の天気」というカスタムフィールドのキーを追加します。
- 管理画面内の記事投稿パネルへ移動します。
- 記事の本文を書き終えたら下のほうへスクロールし、「カスタムフィールド」というタイトルが付いたエリアの右側にある「+(プラス)」サインをクリックします。
- 新規カスタムフィールドを作成するには、「キー」と書かれた下にあるテキストフィールドに書き込みます。まずはここに、「現在読んでいる本」と書きましょう。
- 新規作成したキーに対応する値を追加します。今回の場合は、読んでいる本の題名になります。「値」と書かれた下にあるテキストフィールドに、「星の王子様」と書き込みます。
- ここまで終わったら、「カスタムフィールドを追加 »」ボタンをクリックしましょう。
さらに「現在の天気」を追加するには、上記のプロセスを繰り返し、最後に記事本文の下にある「保存」(または「公開」)ボタンをクリックして記事を保存します。
次に記事を投稿する際、別の本や天気をメタデータとして追加することができます。一度追加したキーは、カスタムフィールド記入エリア内にあるプルダウンメニューの項目として、簡単に選択することができるようになります。
カスタムフィールドを記事内に表示する
カスタムフィールドを記事に追加したら、その情報をサイトで公開しましょう。各記事にカスタムフィールドを表示させるには、the_meta() テンプレートタグを使います。このタグはWordPressループ内に置く必要があります。the_meta() テンプレートタグを記事の最初や最後の記事メタデータセクションなどに含めるという方法が良く使われます。以下が、一般的なタグの記入例です。
<?php the_meta(); ?>
上記の例の場合、ソースコードではこのように表示されているはずです。
<ul class='post-meta'> <li><span class='post-meta-key'>現在読んでいる本: </span> 星の王子様</li> <li><span class='post-meta-key'>現在の天気:</span> 晴れ</li> </ul>
テンプレートタグは、メタデータを順不同リスト(<ul> )形式で出力し、そのリストに post-meta というクラスを自動的に割り当ててくれます。さらにキーは post-meta-key というクラスの <span> 要素に囲まれるので、スタイルシートを使って見た目を変更することができます。
カスタマイズするには、以下の宣言を使用中のテーマのスタイルシート(style.css)に追加します。
.post-meta {font-variant: small-caps; color: maroon; }
.post-meta-key {color: green; font-weight: bold; font-size: 110%; }
サイト上では、以下のように表示されます。
- 現在読んでいる本: 星の王子様
- 現在の天気: 晴れ
さらに、メタデータ表示に便利な機能を追加してくれるプラグインもあります。カスタムフィールドプラグインGoogle検索 でさらに多くのプラグイン情報を見つけられるでしょう。
カスタムフィールドを使ったさらに高度なテクニック
以下はメタデータ/カスタムフィールドを利用したさらに高度なテクニックです。
カスタムフィールドを取得する
メタデータの値を取得するには、 get_post_meta() 関数を使います。
get_post_meta($post_id, $key, $single);
- $post_id は、メタデータの値を取得する記事のIDです。 $post->ID を使って記事のIDを取得してください。
- $key は取得するキーの文字列です。
- $single は true または false としてください。true に設定されている場合、結果を1つの文字列として返します。false の場合、カスタムフィールドの配列を返します。
詳しいやり方
PostMeta で取得された情報は新しいテーブル内に格納されます($wpdb->postmeta)。このテーブルには4つのフィールドがあります。
- meta_id: 各項目の固有ID
- post_id: 取得したメタデータが属する記事のID
- meta_key: キーの名称
- meta_value: キーに割り当てられた値
このテーブル内の値は、wp-blog-header.php 内の $posts 配列が取得された直後、$post_meta_cache と呼ばれる多次元配列に格納されます。この変数は、要求されたページ内に表示される記事に属する値のみが含まれています。配列の構造はこのようになっています。
[
postid1 => [
[
key1 => [val1, val2, ...],
key2 => [val1, val2, ...],
...
],
postid2 => [ ... ],
...
]
つまり、ID256の記事につけられた「今読んでいる本」のデータを取得したい場合、以下のようなPHPコードを使えばいいのです。
// 現在読んでいる本の配列値を取得 $readinglist = $post_meta_cache[256]['現在読んでいる本'];
- $readinglist は1つのの値ではなく配列となることに注意しましょう。
PostMeta 関数
内部関数
これらの関数は、WordPressループ内で使うためのものです。すべての関数は配列を返します。
- get_post_custom(): 現在の記事のキーおよび値を取得。
- get_post_custom_keys(): 現在の記事につけられたすべてのキー名称のリストを取得。
- get_post_custom_values($key): 現在の記事中の、あるキーの値を取得。
- get_post_meta($post_id, $key, $single = false): WP 1.5以降で、キャッシュに関する問題を起こすことなくメタデータを返します。この関数には $post_id と $key が必須で、$singleが TRUE に設定されている場合、配列ではなく、一つ目の結果のみをPHPで使用できるように返します。
テンプレート関数
このテキストを書いている時点では、テンプレート関数は1つしかありません。
- the_meta(): 現在の記事のメタデータを順不同リストとして出力します。<ul> のクラスは post-meta、<li> のクラス post-meta-key となります。
個人個人の開発者が多くのメタデータの面白い使い方を考え出してくれると期待しています。the_meta() テンプレート関数は、単にひとつの基本的な例にすぎません。
現時点では項目を追加・削除することだけしかできませんが、項目を編集できる機能は後ほど追加される予定です。
原文・最新版: WordPress Codex » Using Custom Fields (最新版との差分)
カテゴリ: 要更新 | 初心者向けトピック | デザインとレイアウト | WordPress レッスン | 上級トピック

