ACFで選択フィールドの項目を全て取得する方法

ACFで作成したカスタムフィールドの選択肢の値を、選択されていない項目まで全て取得して表示する方法の備忘録です。
チェックボックスの選択フィールドを作成した場合、通常のget_field()関数を使用した出力では選択されている項目の値が出力されます。
<?php
$field_array = get_field('custom');
if( $field_array ){
echo implode(', ', $field_array);
}
?>
選択されていない項目を含む、選択フィールドの項目全てを表示したい場合は、get_field_object()関数を使用します。
get_field_object() 関数
get_field_object()は、指定したフィールドのラベルやフィールドタイプなどの設定情報を返す関数です。
関数のパラメーター
get_field_object($select_name, [$post_id = false], [$format = true], [$load = true]);
- $select_name:フィールド名またはフィールドキーを指定します。(必須)
- $post_id:投稿IDを指定します。デフォルトは現在の投稿です。
- $format:フォーマットを適用するかどうかの真偽値です。デフォルトはtrueです。
- $load:フィールドの値をロードするかどうかの真偽値です。デフォルトはtrueです。
例えば、投稿ID「25」の投稿ページに設定されているフィールド名「custom」の選択フィールドの設定情報を取得する場合、下記コードのパラメーターを指定します。
$fields = get_field_object('custom', 25);
返却値
フィールドの設定情報は、下記のような連想配列で返します。
array(
'ID' => 0,
'key' => '',
'label' => '',
'name' => '',
'prefix' => '',
'type' => 'text',
'value' => null,
'menu_order' => 0,
'instructions' => '',
'required' => 0,
'id' => '',
'class' => '',
'conditional_logic' => 0,
'parent' => 0,
'wrapper' => array(
'width' => '',
'class' => '',
'id' => ''
)
'choices' => array(
...
)
);
チェックボックスの場合、choicesに選択肢の項目が全て入っているため、キーを指定して値を出力します。
選択項目の出力
チェックボックスの選択フィールド「custom」の選択肢を出力するサンプルコードです。
<?php
$field_array = get_field_object('custom');
$fields = $field_array['choices'];
foreach( $fields as $key => $value ):
echo $value;
endforeach;
?>
連想配列から選択肢が入ったchoicesの配列を取得して、foreachのループで表示しています。


