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

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

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

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

PHP

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

Q&A

1回答

5298閲覧

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

YousukeTanaka

総合スコア79

WordPress

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

PHP

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

0グッド

2クリップ

投稿2016/02/23 08:04

現在、wordpressを用いて、検索画面を作成しています。その際、検索結果の表示に失敗していますので、
ご相談させていただきます。

ご相談したい点は、
①検索結果が表示されない理由(おそらく、search.phpのコードが誤っている可能性があります。)
②必要なコードの理解

①に関して、現在、検索結果が正しく表示されていません。全てのデータが表示される状況になっています。
②その原因として、検索結果でどのコードが必要なのかの理解がありません。特に、タクソノミー項目で
検索をする場合のsearch.phpにどのようなコードが必要なのかが全くわかりません。
教えていただけるとうれしいです。

現状以下のように作成しています。

前提
1.予め選択肢を用意してあげて、検索を行ってもらう。それぞれでドロップダウンを作成。
2.タクソノミーで「地域」と「サービス」を指定。検索条件は、これら2つとしたい。

進め方

  1. searchform.phpを以下のように作成した。これは問題なく表示された。
<form action="<?php echo home_url(); ?>" method="get"> <ul> <li> <select name="area-selection"> <option value="">地域から選択</option> <?php $terms = get_terms('area'); foreach ($terms as $term): ?> <option value="<?php echo esc_attr($term->slug); ?>"> <?php echo esc_html($term->name); ?></option> <?php endforeach; ?> </select> </li> <li> <select name="service-selection"> <option value="">サービスから選択</option> <?php $terms = get_terms('service'); foreach ($terms as $term): ?> <option value="<?php echo esc_attr($term->slug); ?>"> <?php echo esc_html($term->name); ?></option> <?php endforeach; ?> </select> </li> <li> キーワード:<input type="text" value="" name="s" /> </li> </ul> <input type="submit" value="検索!" /> </form>

2.上記がsidebarに表示されるように、sidebar.phpに<?php get_search_form(); ?>
置く。

3.検索結果を以下のように、search.phpに表示。

<?php load_template(TEMPLATEPATH . '/header-2.php'); ?> <div class="archive-section"> <div class="container"> <h2 class="heading text-center">店舗一覧</h2> <!--single-page--> <div class="banner-bdy sig"> <div class="single"> <div class="col-md-9"> <div class="shop-display"> <h2><?php the_search_query(); ?>の検索結果 : <?php echo $wp_query->found_posts; ?>件</h2> <?php query_posts("post_type=shop"); ?> <?php global $wp_query; $total_results = $wp_query->found_posts; $search_query = get_search_query(); ?> <?php if ( have_posts()): ?> <?php while ( have_posts() ) : the_post(); ?> <?php get_template_part('search','shop') ;?> <?php endwhile; ?> <?php endif; ?> </div> </div> <?php get_sidebar(); ?> </div> </div> </div> </div> <?php get_footer(); ?>

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

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

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

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

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

guest

回答1

0

まず別件ですが

<h2><?php the_search_query(); ?>の検索結果 : <?php echo $wp_query->found_posts; ?>件</h2> のあとに <?php query_posts("post_type=shop"); ?> <?php global $wp_query; $total_results = $wp_query->found_posts; $search_query = get_search_query(); ?> が書いてあるので先頭に書いた方がよいと思います。

query_posts("post_type=shop");

$args = array(
'post_type' => 'shop',
'tax_query' => array(
array('taxonomy' => 'area', 'terms' => $_GET['area-selection'], 'field' => 'slug'),
array('taxonomy' => 'service', 'terms' => $_GET['service-selection'], 'field' => 'slug')
),
);
query_posts($args);
にするとどうでしょうか。
エスケープや空の場合など適宜追記してください。

投稿2016/02/24 04:27

ki6ool

総合スコア150

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

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

YousukeTanaka

2016/02/25 15:40

ご推奨されたコードを試したところ、思い通りの検索ができるようになりました。ありがとうございます。 追加の確認で恐縮なのですが、今回の解決の結果、以下のコードはキーワード検索に対応していたものであることがわかりました。 <?php the_search_query(); ?>の検索結果 : <?php echo $wp_query->found_posts; ?> タクソノミーのスラッグで条件検索しても、それと関係ないものとして、 「の検索結果 : @@件」という記載がページに表示されてしまいます。 これを、キーワード検索を実施した場合のみ表示させたい(タクソノミーでの検索では表示を消したい)のですが、どのようにすれば良いでしょうか?ヒントや参考のサイトなどありましたらご紹介していただけるとありがたいです。 以上、よろしくお願いいたします。
ki6ool

2016/02/26 04:25

もっと美しいやり方があると思いますが、 <?php if (get_search_query()): ?> <h2><?php the_search_query(); ?>の検索結果 : <?php echo $wp_query->found_posts; ?>件</h2> <?php endif; ?> でいけるとおもいます
YousukeTanaka

2016/04/28 14:07

コメントが遅くなりました。ありがとうございます。参考にいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問