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

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

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

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

PHP

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

Q&A

解決済

1回答

2840閲覧

複数タームのタクソノミー一覧ページでカスタムフィールドの値がループしない

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

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

PHP

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

0グッド

0クリップ

投稿2017/06/30 11:45

解決させたいことは、複数タームのタクソノミー一覧ページで、ループで通常の投稿タイトルは正常に
取得可能ですが、カスタムフィールドのテキストが最初の1件目のみ取得され、2件目以降も1件目の値を引き継がれてしまいs、ループがされない状態です。

はじめは、the_filed('フィールド値')で取得しておりましたが、
以下の取得方法もあることを知り、試してみましたが、1件目すら取得できませんでした。

global $wp_query; $postID = $wp_query->post->ID; echo get_post_meta($postID, 'フィールド値', true);

ご教授いただけますでしょうか。

よろしくお願いいたします。

以下、タームのタクソノミー一覧のループになります。

<?php $args = array( 'parent' => 0, 'hierarchical' => 0, 'orderby' => 'term_order', // Category Order and Taxonomy Terms Order を使用 'order' => 'ASC' ); $taxonomy_name = 'shop_cat'; $taxonomys = get_terms($taxonomy_name,$args); if(!is_wp_error($taxonomys) && count($taxonomys)): foreach($taxonomys as $taxonomy): $url = get_term_link($taxonomy->slug, $taxonomy_name); $tax_posts = get_posts(array( 'post_type' => get_post_type(), 'posts_per_page' => -1, // 表示させたい記事数 'tax_query' => array( array( 'taxonomy'=>'shop_cat', 'terms'=>array( $taxonomy->slug ), 'field'=>'slug', 'include_children'=>true, 'operator'=>'IN' ), 'relation' => 'AND' ), /*'meta_query' => array( array( 'key'=>'shop-info-type', 'value'=>'Shop' ) )*/ )); if($tax_posts): ?> <ul id="area_<?php echo esc_html($taxonomy->slug); ?>"> <?php foreach($tax_posts as $tax_post): ?> <li> <h3 class="ttl"><?php echo get_the_title($tax_post->ID); ?></h3> <?php if( get_field('shop-info-type') == "代理店"): ?> <p class="shop-type">Distributor</p> <?php elseif( get_field('shop-info-type') == "ショップ"): ?> <p class="shop-type">Shop</p> <?php endif; ?> <table cellpadding="0" cellspacing="0"> <tr> <th>Address</th> <td> </td> </tr> <tr> <th>Contact</th> <td><?php the_field('shop-info-contact'); ?></td> </tr> </table> </li> <?php endforeach; ?> </ul> <?php endif; endforeach; endif; ?>

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

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

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

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

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

guest

回答1

0

ベストアンサー

get_field('shop-info-type',$tax_post->ID) では?

【ACF | get_field()】
https://www.advancedcustomfields.com/resources/get_field/

PHP

1get_field($selector, [$post_id], [$format_value]);

投稿2017/06/30 11:51

kei344

総合スコア69407

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

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

退会済みユーザー

退会済みユーザー

2017/06/30 12:06

ご回答いただきありがとうございます。 ご回答いただきました内容で、以下のように修正しましたが、 ループがされないのですが、get_postの絞り込みが原因なのでしょうか。 <?php if(get_field('shop-info-type',$tax_post->ID) == "代理店"): ?> <p class="shop-type">Distributor</p> <?php elseif(get_field('shop-info-type',$tax_post->ID) == "ショップ"): ?> <p class="shop-type">Shop</p> <?php endif; ?> <tr> <th>Address</th> <td><?php get_field('shop-info-address',$tax_post->ID); ?></td> </tr> <tr> <th>Contact</th> <td><?php get_field('shop-info-contact',$tax_post->ID); ?></td> </tr>
kei344

2017/06/30 12:11

「ループがされない」とは文字通り考えるなら2件目が出ないということですが、表示されていますか? $tax_post->IDの値が取得できていますか?(echo $tax_post->ID;で試す) 問題は切り分けましょう。
退会済みユーザー

退会済みユーザー

2017/06/30 12:39

承知しました。 今現在、一件目も、2件目以降も取得がおこなえない状態になります。 エラー等はでておりません。 <ul id="area_<?php echo esc_html($taxonomy->slug); ?>"> <?php foreach($tax_posts as $tax_post): ?> <li> <h3 class="ttl"><?php echo get_the_title($tax_post->ID); ?></h3> <table cellpadding="0" cellspacing="0"> <tr> <th>Address</th> <td><?php get_field('shop-info-address',$tax_post->ID); ?></td> </tr> <tr> <th>Contact</th> <td><?php get_field('shop-info-contact',$tax_post->ID); ?></td> </tr> </table> </li> <?php endforeach; ?> </ul>
kei344

2017/06/30 12:48

echo $tax_post->ID; は試されましたか?
退会済みユーザー

退会済みユーザー

2017/07/01 09:19

ご連絡遅くなり、申し訳ありません。 echo $tax_post->ID;試しましたら、IDは問題なくループされ取得をすることができました。
退会済みユーザー

退会済みユーザー

2017/07/01 11:06

<?php the_field('shop-info-address',$tax_post->ID); ?> こちらで問題なく取得がループで行えました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問