WordPressには、「カスタムフィールド」という機能が、記事のタイトルや本文投稿とは別に準備されています。「カスタムフィールド」はキーと値の組み合わせからなり、例えば、「フルーツ」などのキーに対して、「バナナ」や「リンゴ」などの値を付加することができます。本文とは別に出力ができるので、ちょっとしたデータを汎用的にテーブルタグでまとめたい時などとても便利です。
WordPressの「カスタムフィールド」は便利な機能なのですが、出力する際にinclude(いくつかを含める)やexclude(何かを除外)して表示するのに少しコツを要します。今回は「カスタムフィールド」の情報を特定の値だけ選んでまとめて出力する方法を記事にしたいと思います。
「カスタムフィールド」の特定の情報を選んでまとめて出力する方法を先にすべてコードを示した後に簡単に解説したいと思います。コードは以下になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php $all_keys = get_post_custom_keys(get_the_ID()); //投稿の持つすべてのカスタムフィールどのキーを配列で返す。 $exclude_keys = array("名称", "所在地", "アクセス", "_edit_lock", "_edit_last"); //除外したいキーの配列を作成。 $result = array_values(array_diff($all_keys, $exclude_keys)); //投稿の持つすべてのキーから削除したいキーを削除し配列の添え字を振りなおす ?> <?php if (!is_null($result) || !empty($result)) : //結果がヌルか空でなければ ?> <table> <?php foreach ($result as $key) { $value = get_post_meta(get_the_ID(), $key, true); //キーから値を得る。 if (!empty($value)) { echo '<tr><th>' . $key . '</th>' . '<td>' . $value . '</td></tr>'; } } //キーのあるだけテーブルを作成する。 ?> </table> <?php endif; ?> |
カスタムフィールドの特定の値をまとめて取得する コード解説
- ・ワードプレスの持つget_post_custom_keysメソッドで投稿で設定した「すべてのカスタムフィールドのキー」を取得します。
- ・除外したいキーの配列を自分で作成します。
- ・phpのメソッドarray_diff()ですべてのキーの配列と除外したいキーの配列の差分を取ります。
- ・phpのメソッドarray_values()で配列の添え字を整理します。
- ・差分で取得した配列の長さ分ループします。
- ワードプレスのメソッドget_post_meta()で投稿idとキーをパラメーターに値を取得します。
- ・取得したキーと値の組でテーブルを作成します。
カスタムフィールドの特定の値をまとめて取得する コードのフローは以上になります。使用メソッドを簡単に説明しておきます。
get_post_custom_keys
指定した投稿の持つ「すべてのカスタムフィールド」のキーを配列で取得します。
使い方
get_post_custom_keys($post_id)
パラメーター
- $post_id
- int(整数)カスタムフィールドのキー配列を取得したい投稿の ID
- 初期値: 現在の投稿の ID
返り値
投稿記事のカスタムフィールド名の配列を返す。投稿記事にカスタムフィールドが設定されていない場合はNULLを返す。
array_diff
複数の配列を比較して差分を返します。
使い方
array_diff (array $array1, array $array2 [, array $... ])
パラメーター
- $array1
- 比較元の配列
- $array2
- 比較対象の配列
- $array3…
- さらに比較したい配列
返り値
array1 のエントリのうち、他のどの配列にも含まれない要素のみを含む配列を返します。
array_values
配列に数字添え字をつけて返す。添え字を整理する。
使い方
array_values ( array $array )
パラメーター
- array
- 配列。
返り値
数値添字の値の配列を返します。
get_post_meta
投稿idとキーをパラメーターに値を取得します。
使い方
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 または値をセットしなかった場合、関数はカスタムフィールドの配列を返します。
- 初期値: false
「wordpress カスタムフィールドの特定の値をまとめて取得する」まとめ
「wordpress カスタムフィールドの特定の値をまとめて取得する」の記事はこれまでになります。いかだだったでしょうか。カスタムフィールドの値を分割して表示したい時などに使用できると思います。今後、ワードプレス側でもっと簡単なメソッドを用意してくれるかもしれませんが、それまで使って頂ければ幸いです。それではまた。