カテゴリー
WordPress

ACF チェックボックス

WordPress のプラグイン Advanced Custom Fields に以下のようなチェックボックスを設定したときの取得方法メモ。

フィールド名は「language」で、 値とラベルの両方を制御するようにした場合。

値とラベルの一覧を取得

foreach (get_field_object('language')['choices'] as $key => $value) {
    echo $key . ' => ' . $value;
}

// 出力
// 1 => HTML
// 2 => CSS
// 3 => JavaScript

※PHP 5.4 以降、関数の返り値を変数に代入しなくても角括弧で直接アクセスできる。PHP: 配列 – Manual#角括弧構文による配列要素へのアクセス

ラベルのみの一覧を取得

foreach (get_field_object('language')['choices'] as $value) {
    echo $value;
}

// 出力
// HTML
// CSS
// JavaScript

選択したラベルを取得

ラジオボタンと違いチェックボックスは複数選択なので、以下のようにすると、配列である事を取得する。

echo get_field('language');

// 出力
// Array

配列なので PHP の foreach で以下のように取得するとして、ACF の「返り値」がデフォルトの「Value」のままだと、投稿時に「HTML」と「CSS」を選択した場合、文字列「1」と「2」を取得する。

foreach (get_field('language') as $value) {
    echo $value . '<br>';
}

// 出力
// 1
// 2

ラベルを取得したい場合、ACF の「返り値」を「ラベル」にするか、「Both (Array)」にして、以下のようにして取得する。

foreach (get_field('language') as $array) {
    echo $array['value'] . ' => ' . $array['label'] . '<br>';
}

// 出力
// 1 => HTML
// 2 => CSS

the_field

投稿時に「HTML」と「CSS」を選択した場合、 ACF の「返り値」の設定によって以下のように HTML を表示する。

Value: 1, 2
ラベル:HTML, CSS
Both (Array):Array, Array

リンク

コメントを残す

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