複数のタクソノミーによる検索フォームを作りたいです
前提
ここに質問の内容を詳しく書いてください。
(例)
現在wordpressにてsearchandfilterを使ってカスタム投稿タイプmemberのcustomタクソノミーのスラッグ名:gyousyu(業種)とスラッグ名:area(地域)という二種類のタクソノミーの検索フォームを作っています。
(ちなみに、search.phpとsearchform.phpを使ってこれとは別にカスタム投稿タイプmemberのキーワード検索を作っています。)
searchandfilterにこだわってはいませんがsearchandfilterを使わないと実装できる技術が無くまた無料プラグインで無いと使えない状況です。
発生している問題
例えば、業種:不動産業と地域:名古屋市中区を選んだ際に同じ名前が二つ表示されてしまいます。
同じ名前が重複表示されないようにするためにはどうすればよいでしょうか?
何卒よろしくお願い致します。
ソースコード
searchandfilter
1[searchandfilter fields="serch,gyousyu,area" post_types="member" submit_label="検索する" empty_search_url="https://onebitious.net/no_results/" ]
taxonomy.php(検索結果はここに表示されます)
1<?php get_header(); ?> 2<?php echo do_shortcode('[elementor-template id="4160"]'); ?> 3<?php echo do_shortcode('[breadcode] 4 '); ?> 5 6<div class="taxonomy_background-color"> 7 8 <div class="custom-wrap"> 9 10<h2 class="pageTitle">カテゴリー検索結果<span></span></h2> 11 12<main class="main1"> 13 <!-- 開いているページの情報を取得 --> 14 <div class="main1-hantei"> 15 <?php 16 $gyousyu_slug=get_query_var('gyousyu'); 17 $gyousyu=get_term_by('slug',$gyousyu_slug,'gyousyu'); 18 if (empty($gyousyu_slug)) { 19 echo '$var1の中は空です。'; 20} 21else { 22 echo '$var1の中は空ではありません。'; 23} 24 25// if (empty($var2)) { 26// echo '$var2の中は空です。'; 27// } 28// else { 29// echo '$var2の中は空ではありません。'; 30// } 31 ?> 32 </div> 33 <script> 34 jQuery(function() { 35 var value2=jQuery('.pageTitle').text(); 36 console.log(value2); 37 var value=jQuery('.main1-hantei').text(); 38 var value3=(value.trim()); 39 console.log(value3); 40 if (value3 == '$var1の中は空です。') { 41 42 console.log('業種は空です'); 43 jQuery('.container1').addClass('dis-none'); 44 45 }else{ 46 console.log('違うよ!'); 47 } 48 49 50}); 51 52 53 54 55 </script> 56 57 <section class="sec1"> 58 <div class="container1"> 59 <div class="sec_header"> 60 <h2 class="title title-jp"><span class="gyousyu_Category_a">業種:</span><br><span class="gyousyu_Category_q"><?php echo $gyousyu->name; ?></span></h2> 61 <span class="title title-en"><?php echo strtoupper($gyousyu->slug); ?></span> 62 63 </div> 64 <div class="row justify-content-center"> 65 <?php if(have_posts()): ?> 66 <?php while(have_posts()):the_post(); ?> 67 <div class="col-md-\3"> 68 <?php get_template_part('loop','member'); ?> 69 70 </div> 71 <?php endwhile; else: ?> 72 <p>記事がありません。</p> 73 <?php endif; ?> 74 75 </div> 76 </div> 77 </section> 78 <!-- 開いているページの情報を取得 --> 79 <div class="main2-hantei"> 80 <?php 81 $area_slug=get_query_var('area'); 82 $area=get_term_by('slug',$area_slug,'area'); 83 if (empty($area_slug)) { 84 echo '$var1の中は空です。'; 85} 86else { 87 echo '$var1の中は空ではありません。'; 88} 89 90// if (empty($var2)) { 91// echo '$var2の中は空です。'; 92// } 93// else { 94// echo '$var2の中は空ではありません。'; 95// } 96?> 97 </div> 98 99 <script> 100 jQuery(function() { 101// var value2=jQuery('.pageTitle').text(); 102// console.log(value2); 103 var value4=jQuery('.main2-hantei').text(); 104 var value5=(value4.trim()); 105 console.log(value5); 106 if (value5 == '$var1の中は空です。') { 107 108 console.log('地域は空です'); 109 jQuery('.container2').addClass('dis-none'); 110 111 }else{ 112 console.log('違うよ!'); 113 } 114 115 116}); 117 118 119 120 121 </script> 122 123 <section class="sec2"> 124 <div class="container2"> 125 <div class="sec_header"> 126 <h2 class="title title-jp"><span class="gyousyu_Category_a">地域:</span><br><span class="gyousyu_Category_q"><?php echo $area->name; ?></span></h2> 127 <span class="title title-en"><?php echo strtoupper($area->slug); ?></span> 128 129 </div> 130 <div class="row justify-content-center"> 131 <?php if(have_posts()): ?> 132 <?php while(have_posts()):the_post(); ?> 133 134 <div class="col-md-\3"> 135 <?php get_template_part('loop','member'); ?> 136 137 </div> 138 139 <?php endwhile; else: ?> 140 <p>記事がありません。</p> 141 <?php endif; ?> 142 143 </div> 144 </div> 145 </section> 146</main> 147 </div> 148</div> 149 150<?php get_footer(); ?>
試したこと
$var1の中は空です。か否かでクエリが空だった時にはds-noneというクラス名(カスタムcssにてdisplay:none)を付与させたことで、
業種または地域の片方のみ何かプルダウンで選択した場合には名前が重複しないようにしました。
また、get_query_varでタクソノミーの情報を取得しているので、get_query_varに配列でgyousyuとareaのタクソノミーを配列にして入れたらいいのではないかとは思っていますがそれが正しいのかもやり方も分かりません。(絞り込みはsearchandfilterの機能なのかなぜか上手くいっています。)
今のやり方ではgyousyuとareaの二つの情報がバラバラに出ているのでarrayなどの配列でまとめた方がいいと思いhttps://www.trevo-web.com/tech/tax-query-listなどを試しましたが上手くいきません。
他には、 foreachで配列の中身の値をループさせて重複している文字列を取得し同じだったら消すという処理を行うことで名前の重複をふせごうとも考えましたがその場合、同姓同名の別人だった場合も名前が消えてしまうのでボツ案になりました。
補足情報(FW/ツールのバージョンなど)
WordPress:現在のバージョン: 6.1.1

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。