Advanced Custom Fieldsで、チェックボックスの値を全部取得したい

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()で中身を見てしまえばなんだってできるね。

 

以上、現場からでした。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です