masakichi-code

独学エンジニアの技術ブログ

ACFのチェックボックスの値がページに表示されない問題を解決 【ACFのチェックボックスでチェックを1つだけにするやり方もご紹介!】

  • WordPress
  • JavaScript
  • PHP
  • プラグイン

2024.12.03(火)

『ACFでチェックボックスを設定したけど、選択した値がページに表示されない』
『たぶんコードが間違っているけど、正しいコードがわからない』
『よく使うコードがあれば知りたい』

こういった疑問に答えます。

本記事の内容

  • ACFのチェックボックスフィールドの設定のやり方
  • 選択された値をページに表示するやり方
  • ACFのチェックボックスをラジオボタンみたくするやり方

Webエンジニア歴2年6ヶ月
WordPressの運営&立ち上げ70サイト以上かかわっている

こういった私が解説していきます。

1. ACFのチェックボックスフィールドの設定のやり方

まずは、WP管理画面で下記のように設定していきます。

  • その①:ACFでチェックボックスフィールドを作成する
  • その②:選択項目を作る
  • その③:出力用に設定する

それでは順番に解説していきます。

その①:ACFでチェックボックスフィールドを作成する

画像付きで解説していきます

管理画面にログインしたら、メニューからACF(カスタムフィールド)をクリックして作成していきます。
ACFのチェックボックスの値がページに表示されない問題を解決 【ACFのチェックボックスでチェックを1つだけにするやり方もご紹介!】001
ACFのチェックボックスの値がページに表示されない問題を解決 【ACFのチェックボックスでチェックを1つだけにするやり方もご紹介!】002

作成画面に入ったら、『タイトル』にわかりやすい名前を入れて『フィールドを追加』をクリックしましょう。
ACFのチェックボックスの値がページに表示されない問題を解決 【ACFのチェックボックスでチェックを1つだけにするやり方もご紹介!】003

そうすると、入力できるフィールドが出てくるので早速設定していきます。

1つのフィールドでも設定できることは多いですが、今回必要なところを解説していきます。
ACFのチェックボックスの値がページに表示されない問題を解決 【ACFのチェックボックスでチェックを1つだけにするやり方もご紹介!】004

まず、『フィールドタイプ』でチェックボックスを選択します。
次に、フィールドラベルは、管理画面で入力者がわかりやすいタイトルをつけます。
例えば『実施可能か?』、『表示させるか?』などよく使いますね。
フィールド名は、コードで使うので英語が好ましいです。

『説明』にはユーザーがわかりやすいよう、『〇〇にチェックを入れると、△△と表示されます』みたいに入れるといいですね。

ここまでできたら次に選択肢を作成していきましょう。

その②:選択項目を作る

いたってシンプル

選択肢に入力する例は下記のとおりです。
ok : 対応している
ng : 対応していない

ACFのチェックボックスの値がページに表示されない問題を解決 【ACFのチェックボックスでチェックを1つだけにするやり方もご紹介!】005

『値 : ラベル』な感じです。
値とラベルを見やすくするために一応『:』の前後には半角スペースを入れています。

ここではあえてラジオボタンを使っていません。
※チェックボックスだと両方選択できてしまいます。

なぜなら、ラジオボタンだと一回選択してしまうとチェックしていない状態に戻せないためです。
最後の『ACFのチェックボックスをラジオボタンみたくするやり方』でチェックボックスをラジオボタンのように扱うカスタマイズをご紹介しているので、ぜひ最後まで見てみてください!

それでは、選択肢の作成ができたら最後の調整をしていきましょう。

その③:出力用に設定する

ここが大事です

下の方を見ていくと『返り値』という項目があります。
ACFのチェックボックスの値がページに表示されない問題を解決 【ACFのチェックボックスでチェックを1つだけにするやり方もご紹介!】006

選択した項目をどう扱うかによって選択は変わりますが、今回のケースだと『値』だけでOK。
『両方(配列)』で返すと、コードに少し調整が必要なので具体例は『2. 選択された値をページに表示するやり方』で解説していきますね。

話が脱線しましたが、とりあえず今回の返り値は値でOKですね。
それが完了したら最後に、『ルール』の欄でカスタムフィールドを表示させたい場所を選びます。
ACFのチェックボックスの値がページに表示されない問題を解決 【ACFのチェックボックスでチェックを1つだけにするやり方もご紹介!】007

そこまでできたら保存しましょう!

次に出力するためのコードを解説していきます。

2. 選択された値をページに表示するやり方

該当のphpファイルに記述していきます。

  • その①:具体的なコードを紹介
  • その②:コードの解説

その①:具体的なコードを紹介

コピペOK!

いきなりですが、コード全体をお見せします。

『1. ACFのチェックボックスフィールドの設定のやり方』で言っていた配列の具体例はコチラです。

値はvalue、ラベルはlabelを示しているので『$check[‘value’]』で値を取得しています。
また、今回『in_array』関数を使っていますが、foreachで取得するやり方でもできますよ!

その②:コードの解説

コードの解説をしていきます

まず、ACFのフィールドを関数に入れます。

次に、関数が空でないか確認してコードを進めていきます。

最後に下記2つのコードのように条件を進めていって出力させます。

foreachにする場合はこんな感じになります。

ページに表示するための説明は以上です。
選択肢など、選択肢が2個以上あるものは配列になって入っているので、普段のように直接値を拾うことができないことに注意ですね。

下記NGな例です。

3. ACFのチェックボックスをラジオボタンみたくするやり方

functions.phpに記載していきます。

  • その①:具体的なコードを紹介
  • その②:コードの解説

その①:具体的なコードを紹介

コピペOK!

今回はカスタム投稿タイプで使うカスタムフィールドを想定してカスタマイズしていきます。

少し長いですが、解説していきます。

その②:コードの解説

細かく解説していきます

下記でフッターに出力するように設定しています。
また、ここでは『convert_acf_checkbox_to_radio』と関数を定義していますが、お好きな名前でOK。

下記で現在の管理画面の情報を取得しています。

投稿タイプが『hogehoge』の時にスクリプトを有効化するようにしていますね。

条件に一致する場合にスクリプトを有効化し、スクリプト内の下記コードでチェックボックスのフィールドを取得しています。

今回はフィールドが2つあることを想定して組んでいますが、1つだけの場合はこんな感じ。

かなり大事なコードは下記ですね。
チェックボックスのクリックイベントを取得しているので、
①チェックが入っているチェックボックスをクリックすると、外れる
②1つチェックしたときにほかのチェックボックスにチェックがついている場合、外す

という挙動になり、選択は1つだけできる状態になっています。

こんな感じで作成しましたが、もしわからない場合はお気軽に聞いてください!

以上、『ACFのチェックボックスの値がページに表示されない問題を解決』と『ACFのチェックボックスでチェックを1つだけにするやり方』をご紹介しました。
ではまた。