Word Press カスタムフィールドの項目を配列で取得して、ループ内で値を取得して表示
2013年05月30日 20:01:32
テーマ:WordPress
Word Press のカスタムフィールドを使って、採用情報のテーブルを作ってみました。最初はCODEX見ながらやってたんだけど、全然上手くいきませんでしたが、カスタムフィールドの項目(名前)さえ分かってしまえば、あとはループ中に値を取得して表示すればできんじゃね?って思うようになって作ってみました。
先ずは、項目名を取得ですよね。項目名を取得するには get_post_custom_keys() を使います。
$keys = get_post_custom_keys( $post->ID );
そして、これを(自分の場合)一度、print_r()でオブジェクトを出力します。まあどんなものが入っているか確認ですね。
print_r( $keys );
確認して得られたオブジェクトは下記のように配列になっています。
Array (
[0] => 休日・休暇
[1] => 応募方法
[2] => お問い合わせ先
[3] => 待遇
[4] => 募集人員
[5] => 必要な経験等
[6] => 必要な免許資格
[7] => 勤務時間
[8] => 具体的な仕事内容
[9] => 勤務地
[10] => 募集職種・雇用形態
[11] => _edit_last
[12] => _edit_lock
[13] => _thumbnail_id
[14] => _aioseop_keywords
[15] => _aioseop_description
[16] => _aioseop_title
)
[0] => 休日・休暇
[1] => 応募方法
[2] => お問い合わせ先
[3] => 待遇
[4] => 募集人員
[5] => 必要な経験等
[6] => 必要な免許資格
[7] => 勤務時間
[8] => 具体的な仕事内容
[9] => 勤務地
[10] => 募集職種・雇用形態
[11] => _edit_last
[12] => _edit_lock
[13] => _thumbnail_id
[14] => _aioseop_keywords
[15] => _aioseop_description
[16] => _aioseop_title
)
ちなみにここでは分かりやすいように改行していますが、本来は改行されていません。Terapadで置換して分かりやすいようにしました。
[11]から[16]まで余分なものが入っていますね。All in One SEO Packのフィールドだと思いますが、ブラウザで見えてる部分にこれらは必要ないので消しちゃいましょう。
奴らの特徴は先頭にアンダースコアが付いてますので、正規表現ではじきました。先頭にアンダースコアが入っている項目名は除外しますが、ループ中にお伝えします。
ってことでループさせます。自分は殆どforeachでループさせるのが好きなので、foreachでやっちゃいます。
//投稿IDでカスタムフィールの項目を配列で取得
$keys = get_post_custom_keys($post->ID);
//ループ
foreach($keys as $key){
//先頭文字がアンダースコアだったら除外
if(preg_match('/^_/', $key)){
continue;
}
//項目に対する値を取得
$values = get_post_custom_values($key);
//値が複数ある場合には改行する
$value = implode($values,'<br />');
//出力
echo '<h3>'.$key.'</h3>';
//改行が有るかもしれないのでnl2br()を付けてあげる
echo '<p>'.nl2br($value).'</p>';
}
$keys = get_post_custom_keys($post->ID);
//ループ
foreach($keys as $key){
//先頭文字がアンダースコアだったら除外
if(preg_match('/^_/', $key)){
continue;
}
//項目に対する値を取得
$values = get_post_custom_values($key);
//値が複数ある場合には改行する
$value = implode($values,'<br />');
//出力
echo '<h3>'.$key.'</h3>';
//改行が有るかもしれないのでnl2br()を付けてあげる
echo '<p>'.nl2br($value).'</p>';
}
以上でほぼ完了ですよね。あとはスタイルを施せば完璧です。初めにテーブルとか言ってましたが、テーブルで作ってません。タグ書くの面倒なので分かりやすく項目に対する値(まんまw)にしてみました。
おまけのおまけ
やっとで出来たプログラムだったんですが、営業さんが今はこのままで言いと仰ってましたので、残念ですが今回のプログラムはお蔵入りとなりました(゜_゜;)ナゼニ?
Webアグレのような順番が気に入ってるとか言ってましたね。確かにあれは見やすいが良いのだろうか?