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

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

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

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

Q&A

解決済

1回答

413閲覧

複数のカスタム投稿に共通のカスタムタクソノミーを使用した時

yusyu

総合スコア13

WordPress

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

0グッド

0クリップ

投稿2018/01/29 11:42

編集2018/01/29 11:45

「A,B,C」のカスタム投稿に共通の「abc」のカスタムタクソノミーを使っています。その「abc」の中には「aa,bb,cc」があります。
そこに、各カスタム投稿ごとに絞り込み検索「絞り込みA,絞り込みB,絞り込みC」を作成しました。
さらに、Aにはaaを含む記事を、Bにはbbを含む記事を,Cにはをccを含む記事を書きました。
Aのカスタム投稿限定で絞り込み検索Aをプルダウン形式で表示した時、本来ならaaの選択肢しかでないはずが、bbとccの選択肢が表示されます。
Bのカスタム投稿限定で絞り込み検索Bをプルダウン形式で表示した時、本来ならbbの選択肢しかでないはずが、aaとccの選択肢が表示されます。
Cのカスタム投稿限定で絞り込み検索Cをプルダウン形式で表示した時、本来ならccの選択肢しかでないはずが、aaとbbの選択肢が表示されます。

関数リファレンス/get terms
より、「'hide_empty'=>true」を指定しましたが駄目でした。

なぜ、他のカスタム投稿までの選択肢を表示されるのか見当がつきません。
どうすれば、
Aのカスタム投稿限定で絞り込み検索Aをプルダウン形式で表示した時、aaだけの選択肢を表示。
Bのカスタム投稿限定で絞り込み検索Bをプルダウン形式で表示した時、bbだけの選択肢を表示。
Cのカスタム投稿限定で絞り込み検索Cをプルダウン形式で表示した時、ccだけの選択肢を表示。
と、出来ますか?

Aの検索フォームのコードは以下です。

<form method="get" id="Aform" class="Aform" action="<?php echo home_url('/'); ?>"> <input type="hidden" name="post_type" value="A"> <label class="checklabel" for="s">CHECK:</label> <li> <select name="abc"> <option value="" > 選択</option> <?php $terms = get_terms('abc'); foreach ($terms as $term): ?> <option value="<?php echo esc_attr($term->slug); ?>"> <?php echo esc_html($term->name); ?></option> <?php endforeach; ?> </select> </li> </ul> <input type="submit" id="a1" class="a1" value="この内容で検索" /> </form>

Bの検索フォーム

<form method="get" id="Bform" class="Bform" action="<?php echo home_url('/'); ?>"> <input type="hidden" name="post_type" value="B"> <label class="checklabel" for="s">CHECK:</label> <li> <select name="abc"> <option value="" > 選択</option> <?php $terms = get_terms('abc'); foreach ($terms as $term): ?> <option value="<?php echo esc_attr($term->slug); ?>"> <?php echo esc_html($term->name); ?></option> <?php endforeach; ?> </select> </li> </ul> <input type="submit" id="a1" class="a1" value="この内容で検索" /> </form>

Cの検索フォーム

<form method="get" id="Cform" class="Cform" action="<?php echo home_url('/'); ?>"> <input type="hidden" name="post_type" value="C"> <label class="checklabel" for="s">CHECK:</label> <li> <select name="abc"> <option value="" > 選択</option> <?php $terms = get_terms('abc'); foreach ($terms as $term): ?> <option value="<?php echo esc_attr($term->slug); ?>"> <?php echo esc_html($term->name); ?></option> <?php endforeach; ?> </select> </li> </ul> <input type="submit" id="a1" class="a1" value="この内容で検索" /> </form>

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

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

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

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

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

guest

回答1

0

自己解決

各検索フォームを以下の様に書き換えた所、希望の通りになりました。Aの検索フォームだけかいておきます。B,CはAの値だけを変えるだけなので省略します。

<form method="get" id="Aform" class='Aform' action="<?php bloginfo('url'); ?>"> <input type="hidden" name="post_type" value="A"> <ul style="list-style: none; padding-left: 8px; "> <label class="testlabel" for="s">Area:</label> <li><select name="abc"> <option value="">選択</option> <?php $taxonomy_name = 'abc'; $taxonomys = get_terms($taxonomy_name); if(!is_wp_error($taxonomys) && count($taxonomys)): foreach($taxonomys as $taxonomy): $tax_posts = get_posts(array('post_type' => A, 'taxonomy' => $taxonomy_name, 'term' => $taxonomy->slug ) ); if($tax_posts): ?> <option value="<?php echo $taxonomy->slug; ?>"><?php echo $taxonomy->name; ?></option> <?php endif; endforeach; endif; ?> </select></li> <label class="testlabel" for="s">Bland:</label> <li><select name="bland"> <option value="">選択</option> <?php $taxonomy_name = 'bland'; $taxonomys = get_terms($taxonomy_name); if(!is_wp_error($taxonomys) && count($taxonomys)): foreach($taxonomys as $taxonomy): $tax_posts = get_posts(array('post_type' => A, 'taxonomy' => $taxonomy_name, 'term' => $taxonomy->slug ) ); if($tax_posts): ?> <option value="<?php echo $taxonomy->slug; ?>"><?php echo $taxonomy->name; ?></option> <?php endif; endforeach; endif; ?> </select></li> </ul> <input type="submit" id="a1" class="a1" value="この内容で検索" /> </form>

投稿2018/01/30 07:06

編集2018/01/30 07:08
yusyu

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問