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

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

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

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

PHP

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

Q&A

解決済

1回答

3066閲覧

【WordPress】カスタムタクソノミーで絞り込んだ場合の検索結果が表示されない。

hrk0114

総合スコア10

WordPress

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

PHP

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

0グッド

0クリップ

投稿2016/08/16 08:11

###前提・実現したいこと
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

検索フォームを実装するにあたり、必要な知識と今回の問題に対するアプローチの方法を教えて頂けますと助かります。また、参考サイトや書籍などもお薦めのものがありましたら幸いです。
どうぞ、よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

自己解決

質問内容を閲覧頂いた方、申し訳ないです。
上記のコードを少し修正すると上手く表示されるようになりました。
var_dump()などで出力内容を確かめたり、URLパラメータの値を見直して、query_postsあたりを修正しました。
具体的には、以下の修正内容となります。

【修正前】

php

1 2 <?php $args = array( 3 'post_type' => 'shop', 4 'tax_query' => array( 5 array('taxonomy' => 'area', 'terms' => $_GET['area-selection'], 'field' => 'slug'), 6 array('taxonomy' => 'menu', 'terms' => $_GET['menu-selection'], 'field' => 'slug') 7 ), 8 ); 9 query_posts($args); ?>

【修正後】

php

1 2 <?php $args = array( 3 'post_type' => 'shop', 4 'tax_query' => array( 5 array('taxonomy' => 'area', 'terms' => $_GET['area'], 'field' => 'slug'), 6 array('taxonomy' => 'menu', 'terms' => $_GET['menu'], 'field' => 'slug') 7 ), 8 ); 9 query_posts($args); ?>

$_GET部分をinput側のname属性値と合わせることにより、正しいクエリが発行できるようになったようです。

至らない者ですが、今後ともよろしくお願い致します。

投稿2016/08/16 11:32

hrk0114

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問