WordPressのプラグイン「Advanced Custom Fields」で、チェックボックス(セレクトボックス)の値を、選択してないやつも含めて全部取得したい。
例えば、「月火水木金土日」という選択肢があって、「火水」しか選択してなくても、とりあえずリストとして全部表示させたいわけである。
これはけっこう長いこと悩んでいて、あれこれややこしい方法で実装してみては「ほんまにこれしかないんか…」と調査しまくっていたが、ついにめっちゃ簡単な方法を見つけたので備忘録。
実装
関数”get_field_object()”を使う。
例えば、”custom_week”というカスタムフィールドに、「月~日」の選択肢を用意しており、更に土日を選択しているとき、値は以下のようになる。
$week = get_field_object('custom_week');
echo '<pre>';
var_dump($week);
echo '</pre>';
// 以下、出力部分
array(15) {
["key"]=>
string(19) "field_59b111613d05f"
["label"]=>
string(9) "営業日"
["name"]=>
string(14) "custom_week"
["_name"]=>
string(14) "custom_week"
["type"]=>
string(8) "checkbox"
["order_no"]=>
int(1)
["instructions"]=>
string(0) ""
["required"]=>
int(0)
["id"]=>
string(24) "acf-field-custom_week"
["class"]=>
string(8) "checkbox"
["conditional_logic"]=>
array(3) {
["status"]=>
int(0)
["allorany"]=>
string(3) "all"
["rules"]=>
int(0)
}
["choices"]=>
array(7) {
["月"]=>
string(3) "月"
["火"]=>
string(3) "火"
["水"]=>
string(3) "水"
["木"]=>
string(3) "木"
["金"]=>
string(3) "金"
["土"]=>
string(3) "土"
["日"]=>
string(3) "日"
}
["default_value"]=>
string(0) ""
["layout"]=>
string(10) "horizontal"
["value"]=>
array(2) {
[0]=>
string(3) "土"
[1]=>
string(3) "日"
}
}
“var_dump()”でデバッグしてしまえばだいたいわかるけど、この場合
“$week[‘choices’]”
で選択肢を配列で全部取得できる。あとはforeachで回すなりなんなり好きにしちゃいましょう!
繰り返しフィールドだろうとなんだろうと、get_field_object()で全値をとって、var_dump()で中身を見てしまえばなんだってできるね。
以上、現場からでした。

コメントを残す