質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.62%

  • PHP

    19784questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    6942questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • プラグイン

    411questions

    プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

Wordpress プラグイン「Advanced Custom Fields」のチェックボタンを出力したい。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 209

Leon-Lionking

score 13

「Advanced Custom Fields」を使って、リストを作成しております。

参考サイト
Advanced Custom Fields

ラジオボタンの出力方法
Wordpress プラグイン「Advanced Custom Fields」のラジオボタンを出力したい。

こちらが一番やりたい内容は、

<ul>
  <li class="current">みかん</li>
  <li>りんご</li>
  <li>ばなな</li>
</ul>

表示

☑みかん □りんご □ばなな

CSSは省略させていただきます。

<?php
  $txt = get_field('others'); // その他の場合 未入力は非表示させる
  $check = get_field_object('fruits'); // フルーツのチェックを呼び出す
  echo "<dt>","お好きな食べ物は","</dt><dd><ul class=\"clearfix\">";
  // その他の入力があった場合 [ない場合は非表示可能にさせる]
  if($txt){ 
    echo '<li>, $txt; ,</li>';
  };
  // 基本的に出力必要な項目を全表示させる
  if($check){
    foreach ($check['choices'] as $key => $val) {
      // チェック選択があった場合はマークを付ける
      if ($key === $check['value']) {
        echo '<li class="current">', $val, '</li>';
      } else {
      // それ以外は通常のマーク
        echo '<li>', $val, '</li>';
      };
    };
  };
  echo "</ul></dd>";
?>

実行結果

<ul>
  <li>みかん</li>
  <li>りんご</li>
  <li>ばなな</li>
</ul>

表示

□みかん □りんご □ばなな

になってしまいます。

ご教授お願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2018/05/01 19:02

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

  • aozuki

    2018/05/02 10:23

    前回の質問と何が違うんでしょう?せめて$checkの中身をvar_dump等で確認してみるぐらいはしてはどうでしょうか。ifで分岐出来てない事は明らかなので。

    キャンセル

回答 2

+3

原因は前回の質問のラジオボタンのソースをチェックボックスに流用しているからです。

// ラジオボタンの場合
array(16) {
    // 略
    ["choices"]=> array(3) { 
        ["orange"]=> string(9) "みかん" 
        ["apple"]=> string(9) "りんご" 
        ["banana"]=> string(9) "ばなな"
    }
    // 略
    ["value"]=>  string(6) "orange"
}

// チェックボックスの場合
array(16) {
    // 略
    ["choices"]=> array(3) { 
        ["orange"]=> string(9) "みかん" 
        ["apple"]=> string(9) "りんご" 
        ["banana"]=> string(9) "ばなな"
    }
    // 略
    ["value"]=> array(1) {
        [0]=> string(6) "orange"
    }
}


get_field_object()は、ラジオボタンとチェックボックスで返り値の配列の形式が違うのが分かりますね?
これはラジオボタンは1つしか選択できないのでvalueは必ず1つになり、チェックボックスは複数選択できるのでvalueが配列で返ってくるからです。

コメント欄にも書きましたがif文での分岐が上手くいかない場合は必ず変数の中身を確認です。
デバッグにはこの辺の関数を覚えておいたほうが良いでしょう
PHP: var_dump - Manual
PHP: print_r - Manual

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

check解決した方法

0

頑張って、いろんなサイトをググりながら参考元をプログラムで組み込みました。

<?php
  $txt = get_field('others'); // その他の場合 未入力は非表示させる
  $field = get_field_object( 'fruits' ); // フルーツのチェックを呼び出す
  echo "<dt>","お好きな食べ物は","</dt><dd><ul class=\"clearfix\">";
  if ( $field && $field['choices'] ) {
    echo '<ul class=\'clearfix\'>';
    // 基本的に出力必要な項目を全表示させる
    foreach ( $field['choices'] as $key => $value ) {
      $class = ( is_array( $field['value'] ) && in_array( $key, $field['value'] ) ) ? ' class="current"' : '';
      echo "<li{$class}>{$value}</li>";
  }
  // その他の入力があった場合 [ない場合は非表示可能にさせる]
  if($txt){
    echo '<li>, $txt; ,</li>';
  };
  echo '</ul></dd>';
?>

実行結果

<ul class="clearfix">
  <li class="current">みかん</li>
  <li>りんご</li>
  <li>ばなな</li>
</ul>

表示

☑みかん □りんご □ばなな

自己解決できました。
2週間費やしてきましたが、達成考えられて気分爽快です。

皆さん、いろいろご指摘ありがとうございます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    19784questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    6942questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • プラグイン

    411questions

    プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。