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

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

新規登録して質問してみよう
ただいま回答率
85.50%
WordPress

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

PHP

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

プラグイン

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

Q&A

解決済

2回答

281閲覧

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

Leon-Lionking

総合スコア37

WordPress

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

PHP

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

プラグイン

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

0グッド

0クリップ

投稿2018/05/01 09:24

編集2018/05/01 09:26

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

参考サイト
Advanced Custom Fields

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

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

html

1<ul> 2 <li class="current">みかん</li> 3 <li>りんご</li> 4 <li>ばなな</li> 5</ul>

表示

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

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

php

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

実行結果

html

1<ul> 2 <li>みかん</li> 3 <li>りんご</li> 4 <li>ばなな</li> 5</ul>

表示

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

になってしまいます。

ご教授お願いします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/05/02 01:23

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

回答2

0

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

PHP

1// ラジオボタンの場合 2array(16) { 3 // 略 4 ["choices"]=> array(3) { 5 ["orange"]=> string(9) "みかん" 6 ["apple"]=> string(9) "りんご" 7 ["banana"]=> string(9) "ばなな" 8 } 9 // 略 10 ["value"]=> string(6) "orange" 11} 12 13// チェックボックスの場合 14array(16) { 15 // 略 16 ["choices"]=> array(3) { 17 ["orange"]=> string(9) "みかん" 18 ["apple"]=> string(9) "りんご" 19 ["banana"]=> string(9) "ばなな" 20 } 21 // 略 22 ["value"]=> array(1) { 23 [0]=> string(6) "orange" 24 } 25}

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

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

投稿2018/05/02 01:38

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

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

php

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

実行結果

html

1<ul class="clearfix"> 2 <li class="current">みかん</li> 3 <li>りんご</li> 4 <li>ばなな</li> 5</ul>

表示

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

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

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

投稿2018/05/10 06:57

Leon-Lionking

総合スコア37

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問