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

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

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

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

PHP

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

Q&A

解決済

2回答

1334閲覧

WordPress:Advanced Custom Fieldsの「関連」で取得した投稿記事の条件分岐した値を取得したい

mjmjmj

総合スコア28

WordPress

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

PHP

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

0グッド

0クリップ

投稿2021/05/07 08:47

カスタム投稿タイプ① カスタム投稿タイプ②の関連記事を選択
カスタム投稿タイプ② ラジオボタンで色を選択

カスタム投稿タイプ①で、Advanced Custom Fieldsのタイプ「関連」を使用して、
投稿で任意の記事を取得できるようにしています。
フィールド:objects_related

さらに、取得したカスタム投稿タイプ②の記事の、またさらにAdvanced Custom Fieldsのタイプ「ラジオボタン」で選択した値を取得したいのですが、
選択した値を条件分岐にて取得しようとしても、1つめの条件《red》のみが表示され、分岐されません。
フィールド:color

カスタム投稿タイプ②(フィールド:color)でredを選択している場合、blueを選択している場合、yellowを選択した場合の3パターンを分けたいのですが、下記の記述では実現できずご助言をいただきたいです。

なお、「item」の値は取得できております。分岐が実現しない状況です。
どなたかご教授をお願い申し上げます。

<?php $post_object = get_field( 'objects_related' ); if( $posts ): ?> <ul> <?php foreach( $post_object as $obj ): ?> <li> <?php if(get_post_meta($obj->ID,'color', 'red')): ?> <span class="item1"><?php echo the_field("item", $obj->ID); ?></span> <?php elseif(get_post_meta($obj->ID,'color', 'blue')): ?> <span class="item2"><?php echo the_field( 'item', $obj->ID); ?></span> <?php elseif(get_post_meta($obj->ID,'color', 'yellow')): ?> <span class="item3"><?php echo the_field( 'item', $obj->ID); ?></span> <?php endif; ?> </li> <?php endforeach; ?> </ul> <?php endif; ?>

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

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

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

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

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

guest

回答2

0

下記の記述で実現ができました。

<?php $radiofiled = get_post_meta($obj->ID, 'color', true); ?> <?php if( $radiofiled == "red"): ?> <span class="item1"><?php echo the_field("item", $obj->ID); ?></span> <?php elseif( $radiofiled == "blue"): ?> <span class="item2"><?php echo the_field( 'item', $obj->ID); ?></span> <?php elseif( $radiofiled == "yellow"): ?> <span class="item3"><?php echo the_field( 'item', $obj->ID); ?></span> <?php endif; ?>

投稿2021/05/07 09:39

mjmjmj

総合スコア28

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

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

0

ベストアンサー

if(get_post_meta($obj->ID,'color', 'red')):

まず、get_post_metaに与えるパラメータが間違っています。
第3パラメータは、ture か false のどちらかです。

関数リファレンス/get post meta 参照

$single

(真偽値) (オプション) true をセットした場合、文字列として単一の結果を返します。false または値をセットしなかった場合、関数はカスタムフィールドの配列を返します。


ACF の場合、フィールド定義で設定した内容で返ってくる値が変わるので、ACF の関数で取得した方が良いと思います。

radio button のフィールド定義内容が不明ですが、Return Format で、value を設定しているとすれば、get_field で、設定した値が返ってくるはずので、たとえば下記のような感じでどうでしょうか?

$color = get_field('color', $obj->ID); if($color == 'red'): // redの処理 elseif($color == 'blue'): // blueの処理 elseif($color == 'yellow'): // yellowの処理 endif;

投稿2021/05/07 09:14

CHERRY

総合スコア25171

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

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

mjmjmj

2021/05/07 09:39

ご回答ありがとうございます。 おっしゃる通り、選択の条件分岐を間違っておりました。 参考にさせていただいたところ、希望通りの出力が実現できました。 誠にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問