2020/07/05 21:09
ACFで設定したラジオボタンやチェックボックスでの条件分岐や取得のメモ
当ブログでもちょいちょい出てくる「ACF」(Advanced Custom Fields)のラジオボタンやチェックボックスを使った便利な使い方です。
条件分岐や取得方法をしっかり覚えておけば汎用性が広いので、いろんな状況で便利に使えるようになります。
記事投稿内の設定で使う場合(ラジオボタン)
例えば記事投稿にラジオボタンで条件をつける設定を追加したとする。
分かりやすく、記事によってスライダーに掲載する有無を決めれるように、とかにしましょう。
「この記事はスライダーに載せる」「この記事は載せない」みたいな。
まずはカスタムフィールドの設定で下記のようなフィールドを作成します。
もちろん掲載の「ルール」は記事の投稿を選んでください。
これで投稿記事内にACFのフィールドが追加されたと思いますので、有りか無しかを選択できるようになりました。
出力側(ラジオボタン)
では次にラジオボタンの選択内容を取得し、分岐させる方法です。
めちゃくちゃ簡単です。
<?php if(get_field('top_slider') == 'on'):?>
【有の場合に表示するものを記述】
<?php endif;?>
これだけですね。
選択肢の中に「on」と「off」の2種類があったと思いますが、それが「on」だった場合にこうするという書き方です。
ちなみに選択したもののラベルを表示したい場合はこう書きます。
<?php
$field = get_field_object('top_slider'); //フィールドの設定情報を取得
$value = $field['value']; //選択された値を取得
$label = $field['choices'][ $value ];//選択された表示名(ラベル)を取得
?>
<?php echo $label; ?>
以上がラジオボタンの取得や分岐の書き方となります。
では次にチェックボックスバージョンの書き方です。
記事投稿内の設定で使う場合(チェックボックス)
ACFのフィールド作成じにチェックボックスを選び、選択肢を設定します。
今回の場合は「有り」か「無し」かを設定したいだけなので、掲載する場合のみチェックするという形にしました。
出力側(チェックボックス)
取得する書き方はコチラです。
<?php $checkbox = get_field('top_slider',option);?>
<?php if( $checkbox && in_array('on', $checkbox )):?>
【有の場合に表示するものを記述】
<?php endif;?>
こちらもラジオボタンの時と同じように「on」の場合に表示する、という書き方ですね。
チェックされたもののラベルを一覧表示させたい場合の書き方はコチラです。
<?php
$field = get_field_object('top_slider');
$checkbox = $field['value'];
if( $checkbox ):
?>
<ul>
<?php foreach( $checkbox as $check ): ?>
<li><?php echo $field['choices'][ $check ]; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
これでチェックがあるもののラベルを全て出力します。
まとめ
もし、〇〇なら、××を表示、という基本的な使い方の話でした。
書き方もそんなに難しくなく、シンプルなのですぐに覚えられますね。
ACFを使ったラジオボタンやチェックボックスでの分岐はかなり便利に使えると思うので、ぜひ参考になればと思います。
投稿記事内だけでなく、オプション項目で自由に作成・設定ができるので、例えば店舗のサイトなんかだったら入場料やメニュー料金、営業時間、その他変動するシステム設定なんかに使っていけるかと思います。
例えば、営業時間の設定箇所でチェックをいれたら「CLOSED」になるとか、文字や背景色が変わるとか。
メニューの料金箇所にチェックいれたら「〇%OFF!」になるとか。
いろんな事ができるので夢が広がりますね。
現場から以上です!
14130