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

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

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

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

PHP

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

プラグイン

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

Q&A

解決済

1回答

1336閲覧

Smart Custom Fieldsのループ内のラジオボタンの選択肢によって条件分岐させたい

aoiuser

総合スコア1

WordPress

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

PHP

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

プラグイン

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

0グッド

0クリップ

投稿2022/10/20 03:57

編集2022/10/21 14:20

前提

wordpressのプラグインSmart Custom Fieldsで作成したループ内の記述を、ラジオボタンの選択によって出力内容の条件分岐させたいのですが、ループ内の条件分岐がうまくいきません。
PHP初心者なりに過去記事を漁って見たのですが、適切な記述が分からず、ご教授願えればと思います。

実現したいこと

  • ループ内にあるラジオボタンの選択によって排出されるコードを条件分岐させたい

発生している問題・エラーメッセージ

ループ内容までは排出されるのですが、条件分岐がうまくいきません

該当のソースコード

php

1<?php 2$faq = SCF::get('gyarally_loop'); 3?> 4<ul> 5 <?php foreach ( $faq as $fields ) { 6 $select = scf::get('media_tipe'); 7 ?> 8// ↓ここから 9 <li> 10 <?php 11 if( get_field('media_tipe') == 'img' ):?> 12 <p><?php echo $fields['gayara_title']; ?></p> 13 <p><a href="<?php echo $fields['img_src']; ?>"><?php echo $fields['img_src']; ?></a></p> 14 <p><?php echo nl2br($fields['garally_text']); ?></p> 15 </li> 16// ↑ここまでと 17// ↓ここから 18 <?php 19 elseif( get_field('media_tipe') == 'movie' ):?> 20 <li> 21 <p><?php echo $fields['gayara_title']; ?></p> 22 <p><a href="<?php echo $fields['movie_href']; ?>"><?php echo $fields['movie_href']; ?></a></p> 23 <p><?php echo nl2br($fields['garally_text']); ?></p> 24 </li> 25 <?php endif; ?> 26// ↑ここまでを条件分岐させたいです 27 <?php } ?> 28</ul> 29<?php ?>

補足情報

グループ名は"gyarally_loop"、このグループの中にラジオボタンを作成して、ラジオボタンの名前は"media_tipe"で選択肢のキー2つがそれぞれ"img"と"movie"です。
このラジオボタンの選択肢によって出す内容を振り分けられるようにしたいです。

[Smart Custom Fieldsの設定内容]
グループ名:"gyarally_loop"
グループ内のラジオボタン名:"media_tipe"
ラジオボタンの選択肢のキー:"img","movie"
グループ内のテキストエリア名1:"gayara_title"
グループ内のテキストエリア名2:"img_src"
グループ内のテキストエリア名3:"movie_href"
グループ内のテキストボックス名:"garally_text"

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

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

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

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

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

8-0_nyan5

2022/10/20 05:36

「get_field」はACFの関数では?
aoiuser

2022/10/20 09:07 編集

そうなのですね! 因みに、以下の様にul内の条件分岐の部分を書き換えても今度はループ文自体が消えてしまいました… ```lang-php <?php $status = SCF::get('media_tipe'); ?> <?php if($status == 'img'): ?> <li> <p style="margin-top: 10px;"><?php echo $fields['gayara_title']; ?>aaa</p> <p><a href="<?php echo $fields['img_src']; ?>"><?php echo $fields['img_src']; ?></a></p> <p style="margin-bottom: 10px;"><?php echo nl2br($fields['garally_text']); ?></p> </li> <?php else: ?> <li> <p style="margin-top: 10px;"><?php echo $fields['gayara_title']; ?></p> <p><a href="<?php echo $fields['movie_href']; ?>"><?php echo $fields['movie_href']; ?></a></p> <p style="margin-bottom: 10px;"><?php echo nl2br($fields['garally_text']); ?></p> </li> <?php endif; ?> ```
CHERRY

2022/10/20 10:52

現在のコードでは どのような HTML が出力されていて、 理想の結果の HTML は、どのような内容でしょうか。
aoiuser

2022/10/20 11:18

今のコードですと、 ```lang-php <ul> <li> <p>投稿タイトル</p> <p><a href="画像のリンク先が入ります。1">画像のリンク先が入ります。1</a></p> <p>ここに本文が入ります。</p> </li> ・・・<li></li>の繰り返し </ul> ``` とHTMLが出力されているのですが、このliの部分が"media_tipe"という名前のラジオボタンの選択肢が"img"か"movie"の選択で <li> <p>投稿タイトル</p> <p><a href="動画のリンク先が入ります。">動画のリンク先が入ります。</a></p> <p>ここに本文が入ります。</p> </li> という様な記述内容に振り分けられる様にしたいのですが、今は振り分けが効かずにいる状態です… という回答で大丈夫でしょうか?
CHERRY

2022/10/21 11:59

カスタムフィールドをグループ化されているのだと思いますが、構造がわかりにくいです。 カスタムフィールドをどのように定義しているか 質問に追記していただくことはできないでしょうか。 media_tipe は、gyarally_loop の中にあったりしませんか?
aoiuser

2022/10/21 14:26

はい!グループ化した"gyarally_loop"の中に"media_tipe"を作っています! すみません、伝わりにくかったですね、補足情報にカスタムフィールドの設定情報を追記させて頂きました。 Smart Custom Fieldsで表記されている書き方で記述させて頂きましたが、少しはわかるようになったでしょうか?
guest

回答1

0

ベストアンサー

グループ名は"gyarally_loop"、このグループの中にラジオボタンを作成して、ラジオボタンの名前は"media_tipe"で選択肢のキー2つがそれぞれ"img"と"movie"です。
このラジオボタンの選択肢によって出す内容を振り分けられるようにしたいです。

カスタムフィールドの定義が上記内容であれば、if の比較対象は、get_field('media_tipe') ではなく $fields['media_tipe'] が正しいのではないでしょうか。

具体的には if 文を

if( get_field('media_tipe') == 'img' ): ?>

ではなく

if( $fields['media_tipe'] == 'img' ): ?>

とすることで、条件分岐できないでしょうか。 ( elseif 文も同様に変更する必要があります )

投稿2022/10/21 14:46

CHERRY

総合スコア25171

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

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

aoiuser

2022/10/24 05:20

こちらの修正で無事に振り分けることができました!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問