###前提・実現したいこと
WordPressでショップ管理のカスタム投稿(スラック名[shop])を作成して、カスタム投稿にひも付けたカスタムタクソノミー(地域[area]、サービスメニュー[menu])での検索機能を実装しようとしています。
検索フォームテンプレートとして「searchform.php」
検索フォームを埋め込むページテンプレートとして「searchpage.php」
検索結果表示用テンプレートとして「search.php」
の3つのテンプレートファイルを作成しました。
###発生している問題
問題は、検索結果が出力されないことです。
※検索条件の入力画面から結果表示ページへの遷移までは問題なく出来ます。
※検索データは1件も表示されません。
###理解できていないこと
カスタムタクソノミーで検索した場合は、検索データがどのような流れで取得されてくるのか、ということです。またsearch.phpに記載するコードの内容もよくわかってないです。
###該当のソースコード
searchform.php
php
1<form role="search" method="get" class="form-group" action="<?php echo home_url( '/' ); ?>"> 2 <input type="search" class="form-control" placeholder="<?php echo esc_attr_x( 'Search …', 'placeholder' ) ?>" value="<?php echo get_search_query() ?>" name="s" title="<?php echo esc_attr_x( 'Search for:', 'label' ) ?>" /><br> 3 <input type="submit" class="btn btn-default" value="<?php echo esc_attr_x( 'Search', 'submit button' ) ?>" /> 4</form> 5<form role="search" method="get" class="form-group" action="<?php echo home_url( '/' ); ?>"> 6 <h4>地域</h4> 7 <input type="hidden" name="s"> 8 <select class="form-control mgb-15" name="area" id="input-id"> 9 <option value="" selected="true">指定なし</option> 10 <?php 11 $terms = get_terms('area' , 'get=all'); 12 foreach($terms as $term){ 13 echo '<option value="' . $term->slug . '">' . 14 esc_html($term -> name) . 15 '</option>';} 16 ?> 17 </select> 18 <div class="row mgb-15"> 19 <div class="col-md-3"> 20 <h4>サービスメニュー</h4> 21 </div> 22 <div class="col-md-9"> 23 <input type="hidden" name="s"> 24 <div class="service-menu"> 25 <?php 26 $terms = get_terms('menu' , 'get=all'); 27 $cnt = 0; 28 foreach($terms as $term){ 29 echo '<input type="checkbox" name="menu[]" value="' . $term->slug . '"/>' . 30 esc_html($term -> name)." "; 31 // 改行タグ 32 $cnt++; 33 if ($cnt==3 or $cnt==6 or $cnt==9) { 34 echo '<br>'; 35 } 36 } 37 ?> 38 </div> 39 </div> 40 </div> 41 <input type="submit" class="btn btn-default mgb-15" value="<?php echo esc_attr_x( 'Search', 'submit button' ) ?>" /> 42</form> 43
searchpage.php
php
1<?php 2/* 3Template Name: Search Page 4*/ 5?> 6<?php load_template(TEMPLATEPATH . '/header-2.php'); ?> 7 8<!--blog-starts--> 9<div class="blog-section"> 10 <div class="container"> 11 <h2 class="heading text-left">検索ページ</h2> 12 <!--single-page--> 13 <div class="banner-bdy sig"> 14 <div class="single"> 15 <div class="sing-img-text"> 16 17 <?php get_search_form(); ?> 18 19 </div> 20 21 <?php get_sidebar(); ?> 22 23 </div> 24 </div> 25<!-- /single --> 26 </div> 27</div> 28 29<!--blog-ends--> 30 31 32 33<?php get_footer(); ?>
search.php
php
1<?php load_template(TEMPLATEPATH . '/header-2.php'); ?> 2<!--blog-starts--> 3<div class="blog-section"> 4 <div class="container"> 5 <h2 class="heading text-center">検索結果</h2> 6 <!--single-page--> 7 <div class="banner-bdy sig"> 8 <div class="single"> 9 <div class="sing-img-text"> 10 11 <?php $args = array( 12 'post_type' => 'shop', 13 'tax_query' => array( 14 array('taxonomy' => 'area', 'terms' => $_GET['area-selection'], 'field' => 'slug'), 15 array('taxonomy' => 'menu', 'terms' => $_GET['menu-selection'], 'field' => 'slug') 16 ), 17 ); 18 query_posts($args); ?> 19 <?php 20 global $wp_query; 21 $total_results = $wp_query->found_posts; 22 $search_query = get_search_query(); 23 ?> 24 <h3 class="heading">検索結果<span>(<?php echo $total_results; ?>件)</span></h3> 25 26 <?php while(have_posts()): the_post(); ?> 27 <h3><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3> 28 <div class="row"> 29 <!--■アイキャッチ画像--> 30 <div class="col-md-3 col-sm-4 col-xs-12"> 31 <?php the_post_thumbnail(array(160, 220), array('alt' => get_the_title())); ?> 32 </div> 33 <!--■ショップ情報--> 34 <div class="col-md-9 col-sm-8 col-xs-12"> 35 <!--住所--> 36 住所 37 <?php the_field('address',$post->ID); ?> 38 <br> 39 <!--アクセス--> 40 アクセス 41 <?php the_field('access',$post->ID); ?> 42 <br> 43 <!--電話番号--> 44 電話番号 <a href="<?php the_field('telphone-no',$post->ID); ?>"><?php the_field('telphone-no',$post->ID); ?></a> 45 <br> 46 <!--サービス--> 47 <div class="service">サービス</div> 48 <ul> 49 <?php wp_list_categories(array('taxonomy' => 'menu', 'title_li' => '')); ?> 50 </ul> 51 </div> 52 </div> 53 <hr> 54 <?php endwhile; ?> 55 </div> 56 <?php get_sidebar(); ?> 57 </div> 58 </div> 59 <!-- /single --> 60 </div> 61</div> 62<!--blog-ends--> 63<?php get_footer(); ?> 64
###補足
search.phpは以下の記事を参考に実装してみたのですが、ダメでした。
https://teratail.com/questions/28059
検索フォームを実装するにあたり、必要な知識と今回の問題に対するアプローチの方法を教えて頂けますと助かります。また、参考サイトや書籍などもお薦めのものがありましたら幸いです。
どうぞ、よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。