ハマったのでメモ。
カスタムフィールドでチェックボックスを指定した場合に、その値を配列からリストで出力する関数を書きました。
余談:有名なAdvanced Custom Fields (以下 ACF) を使うと、カスタムフィールドの値がPHPでシリアル化された文字列で保存されて、post_custom()を使うとそのまま出力されてしまいます。
▼テンプレートのコード
[code]
[/code]
▽出力結果
[code]
a:4:{i:0;s:15:”ナス”;i:1;s:15:”トマト”;i:2;s:6:”かぼちゃ”;i:3;s:9:”じゃがいも”;}
[/code]
そこで配列を取得するのには get_post_meta() を使います
▼テンプレートのコード
[code]
ID,’room_mood’)); ?>
[/code]
▽出力結果
[code]
array(1) {
[0]=>
array(4) {
[0]=>
string(6) “ナス”
[1]=>
string(9) “トマト”
[2]=>
string(12) “かぼちゃ”
[3]=>
string(15) “じゃがいも”
}
}
[/code]
このままでも配列をいじってごりごり書けます。
ですが、数が多いと不便なので、カスタムフィールドのチェックボックスの複数の選択結果をリストタグで出力する関数を書いてみました。
▼function.phpに以下を記述
[code]
//カスタムフィールドのチェックボックスの複数の値を配列で返す
function get_array_cf_checkbox( $postID , $filed ) {
$cf_tmp = get_post_meta($postID, $filed );
return $cf_tmp[0];
}
//カスタムフィールドのチェックボックスの値をリストで取得する
function get_list_cf_checkbox( $postID , $filed ) {
$cf_tmp = get_array_cf_checkbox($postID, $filed );
$out = “
- “;
- ‘ . $v . ‘
foreach ($cf_tmp as $v) {
$out .= ‘
‘;
}
$out .= “
“;
return $out;
}[/code]
▼テンプレート内の記述
[code]
ID,’room_mood’); ?>
[/code]
▽出力結果
[code]
- ナス
- トマト
- かぼちゃ
- じゃがいも
[/code]
参考サイト)
コメント
コメント一覧 (1件)
カスタムフィールドで複数の値を取得しリスト表示する方法を探していたところ
こちらのページを見つけることが出来ました。
checkboxではなくtextの場合の方法を教えて頂けませんでしょうか?
宜しくお願い致します。