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

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

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

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

Q&A

0回答

498閲覧

wordpress自作検索フォーム チェックボックスとプルダウンのAND検索ができない

Maki07

総合スコア0

WordPress

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

0グッド

0クリップ

投稿2021/04/21 02:50

絞り込み検索をプラグインを使わずに実装を参考に自作の検索フォームを作成しています。

実現したいこと

1つのカスタム投稿タイプに6つタクソノミーを用意し、その内容でAND検索させたいと思っています。

発生している問題

チェックボックスとチェックボックスでの絞り込みはうまくいくのですが、プルダウン項目を含めるとうまくいきません。

該当のコード(searchform)

<div class="searchBox flexC animate delay01"> <form method="get" action="<?php echo esc_url(home_url('/'));?>"> <input type="hidden" name="post_type" value="jobs"> <input type="hidden" name="s" id="s" value="<?php echo get_search_query(); ?>" placeholder="キーワード"> <ul class="serviceList"> <li> <dl <dt>チェックボックス1 - taxonomy1</dt> <dd> <ul class="checkboxList flex"> <?php $taxonomy_name = 'jobs01_cat'; $taxonomys = get_terms($taxonomy_name, array('hide_empty' => false)); if(!is_wp_error($taxonomys) && count($taxonomys)): foreach($taxonomys as $taxonomy): $tax_posts = get_posts(array('post_type' => 'jobs', 'taxonomy' => $taxonomy_name, 'term' => $taxonomy->slug ) ); ?> <li><label class="checkboxInput"><input class="checkboxInput-Input" type="checkbox" name="post_jobs01tag[]" value="<?php echo $taxonomy->slug; ?>"><span class="checkboxInput-DummyInput"></span><span class="checkboxInput-LabelText"><?php echo $taxonomy->name; ?></span></label></li> <?php endforeach; endif; ?> </ul> </dd> </dl> </li> </ul> <details> <summary> こだわり検索 </summary> <div class="answer"> <ul class="serviceList"> <li> <dl> <dt>チェックボックス2 - taxonomy2</dt> <dd> <ul class="checkboxList flex"> <?php $taxonomy_name = 'jobs02_cat'; $taxonomys = get_terms($taxonomy_name, array('hide_empty' => false)); if(!is_wp_error($taxonomys) && count($taxonomys)): foreach($taxonomys as $taxonomy): $tax_posts = get_posts(array('post_type' => 'jobs', 'taxonomy' => $taxonomy_name, 'term' => $taxonomy->slug ) ); ?> <li><label class="checkboxInput"><input class="checkboxInput-Input" type="checkbox" name="post_jobs02tag[]" value="<?php echo $taxonomy->slug; ?>"><span class="checkboxInput-DummyInput"></span><span class="checkboxInput-LabelText"><?php echo $taxonomy->name; ?></span></label></li> <?php endforeach; endif; ?> </ul> </dd> </dl> </li> <li> <ul class="selectList flex"> <li> <dl> <dt>ラジオボタン1 - taxonomy3</dt> <dd> <select name="jobs03_cat"> <option value="none">指定なし</option> <?php $taxonomy_name = 'jobs03_cat'; $taxonomys = get_terms($taxonomy_name, array('hide_empty' => true)); if(!is_wp_error($taxonomys) && count($taxonomys)): foreach($taxonomys as $taxonomy): $tax_posts = get_posts(array('post_type' => 'jobs', 'taxonomy' => $taxonomy_name, 'term' => $taxonomy->slug ) ); ?> <option value="<?php echo $taxonomy->slug; ?>"><?php echo $taxonomy->name; ?></option> <?php endforeach; endif; ?> </select> </dd> </dl> </li> <li> <dl> <dt>ラジオボタン2 - taxonomy4</dt> <dd> <select name="jobs04_cat"> <option value="none">指定なし</option> <?php $taxonomy_name = 'jobs04_cat'; $taxonomys = get_terms($taxonomy_name, array('hide_empty' => true)); if(!is_wp_error($taxonomys) && count($taxonomys)): foreach($taxonomys as $taxonomy): $tax_posts = get_posts(array('post_type' => 'jobs', 'taxonomy' => $taxonomy_name, 'term' => $taxonomy->slug ) ); ?> <option value="<?php echo $taxonomy->slug; ?>"><?php echo $taxonomy->name; ?></option> <?php endforeach; endif; ?> </select> </dd> </dl> </li> </ul> </li> <li> <ul class="selectList flex"> <li> <dl> <dt>ラジオボタン3 - taxonomy5</dt> <dd> <select name="jobs05_cat"> <option value="none">指定なし</option> <?php $taxonomy_name = 'jobs05_cat'; $taxonomys = get_terms($taxonomy_name, array('hide_empty' => true)); if(!is_wp_error($taxonomys) && count($taxonomys)): foreach($taxonomys as $taxonomy): $tax_posts = get_posts(array('post_type' => 'jobs', 'taxonomy' => $taxonomy_name, 'term' => $taxonomy->slug ) ); ?> <option value="<?php echo $taxonomy->slug; ?>"><?php echo $taxonomy->name; ?></option> <?php endforeach; endif; ?> </select> </dd> </dl> </li> <li> <dl> <dt>ラジオボタン4 - taxonomy6</dt> <dd> <select name="jobs06_cat"> <option value="none">指定なし</option> <?php $taxonomy_name = 'jobs06_cat'; $taxonomys = get_terms($taxonomy_name, array('hide_empty' => true)); if(!is_wp_error($taxonomys) && count($taxonomys)): foreach($taxonomys as $taxonomy): $tax_posts = get_posts(array('post_type' => 'jobs', 'taxonomy' => $taxonomy_name, 'term' => $taxonomy->slug ) ); ?> <option value="<?php echo $taxonomy->slug; ?>"><?php echo $taxonomy->name; ?></option> <?php endforeach; endif; ?> </select> </dd> </dl> </li> </ul> </li> </ul> </div> </details> <div class="comLink"><input type="submit" value="この条件で絞り込む" class="search_btn" /></div> </form> </div>

該当のコード(searchform)

html

1<?php 2 $s = $_GET[ 's' ]; 3 $post_jobs01tag = $_GET[ 'post_jobs01tag' ]; 4 $post_jobs02tag = $_GET[ 'post_jobs02tag' ]; 5 $post_jobs03tag = $_GET[ 'post_jobs03tag' ]; 6 $post_jobs04tag = $_GET[ 'post_jobs04tag' ]; 7 $post_jobs05tag = $_GET[ 'post_jobs05tag' ]; 8 $post_jobs06tag = $_GET[ 'post_jobs06tag' ]; 9 10 //jobs01_cat 11 if ( $post_jobs01tag ) { 12 $taxquerysp[] = array( 13 'taxonomy' => 'jobs01_cat', 14 'terms' => $post_jobs01tag, 15 'include_children' => false, 16 'field' => 'slug', 17 'operator' => 'AND', 18 ); 19 } 20 21 //jobs02_cat 22 if ( $post_jobs02tag ) { 23 $taxquerysp[] = array( 24 'taxonomy' => 'jobs02_cat', 25 'terms' => $post_jobs02tag, 26 'include_children' => false, 27 'field' => 'slug', 28 'operator' => 'AND', 29 ); 30 } 31 32 //jobs03_cat 33 if ( $post_jobs03tag ) { 34 $taxquerysp[] = array( 35 'taxonomy' => 'jobs03_cat', 36 'terms' => $post_jobs03tag, 37 'include_children' => false, 38 'field' => 'slug', 39 'operator' => 'AND', 40 ); 41 } 42 43 //jobs04_cat 44 if ( $post_jobs04tag ) { 45 $taxquerysp[] = array( 46 'taxonomy' => 'jobs04_cat', 47 'terms' => $post_jobs04tag, 48 'include_children' => false, 49 'field' => 'slug', 50 'operator' => 'AND', 51 ); 52 } 53 54 //jobs05_cat 55 if ( $post_jobs05tag ) { 56 $taxquerysp[] = array( 57 'taxonomy' => 'jobs05_cat', 58 'terms' => $post_jobs05tag, 59 'include_children' => false, 60 'field' => 'slug', 61 'operator' => 'AND', 62 ); 63 } 64 65 //jobs06_cat 66 if ( $post_jobs06tag ) { 67 $taxquerysp[] = array( 68 'taxonomy' => 'jobs06_cat', 69 'terms' => $post_jobs06tag, 70 'include_children' => false, 71 'field' => 'slug', 72 'operator' => 'AND', 73 ); 74 } 75 $taxquerysp['relation'] = 'AND'; 76 ?> 77 <?php 78 query_posts( array( 79 'tax_query' => $taxquerysp, 80 's' => $s, 81 'post_type' => 'jobs', 82 'paged' => $paged, 83 ) ); 84 ?> 85 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 86 <div class="borderBox animate"> 87 <dl class="textDl clearfix"> <dt>職種</dt> 88 <dd> 89 <a href="<?php the_permalink(); ?>"> 90 <?php the_title_attribute(); ?> 91 </a> 92 </dd> 93 </dl> 94 <div class="link en"><a href="<?php the_permalink(); ?>">VIEW MORE</a></div> 95 </div> 96 <?php endwhile; else : ?> 97 <div>該当なし</div> 98 <?php endif; ?>

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問