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

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

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

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

PHP

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

Q&A

解決済

2回答

1035閲覧

WordPressのカスタム投稿の検索結果の数が正しく表示されない。

yoshimitsu41

総合スコア36

WordPress

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

PHP

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

0グッド

0クリップ

投稿2018/02/28 01:47

やりたいこと

カスタム投稿の検索で件数を表示させたい。

おこっている問題。

カスタムタクソノミーで、「料金」「悩み」「その他」があります。
「料金」は[全て][1000円以内][2000円以内]等のタームがあります。

「悩み」「その他」で検索をした場合にはうまく該当件数が表示されるのですが
「料金」だけで検索した場合何故が該当件数より多く表示されます。
全ての投稿数が3件なのに、「料金」だけで検索すると7件と表示されます。

該当件数の表示は下記で取得しています。

php

1<?php echo $wp_query->found_posts; ?>

現状の状態

カスタム投稿名:shampoo
カスタムタクソノミー:price|nayami|sonota

php

1#searchform.php 2 3#priceでの検索 4 <?php 5 $terms = get_terms('price'); 6 foreach ($terms as $term) { 7 if ($term === reset($terms)) { 8 echo '<label for="' .$term->slug .'"><input type="radio" name="price[]" value="' .$term->slug .'" checked id="' . $term->slug .'">' .$term->name . '</label>'; 9 } 10 else { 11 echo '<label for="' .$term->slug .'"><input type="radio" name="price[]" value="' .$term->slug .'" id="' . $term->slug .'">' .$term->name . '</label>'; 12 } 13 } 14 ?> 15 16#nayamiでの検索 17 <?php 18 $terms = get_terms('nayami'); 19 foreach ($terms as $term): ?> 20 <label for="<?php echo esc_attr($term->slug); ?>"><input type="checkbox" name="nayami[]" value="<?php echo esc_attr($term->slug); ?>" id="<?php echo esc_attr($term->slug); ?>"><?php echo esc_html($term->name); ?></label> 21 <?php endforeach; ?> 22 23#sonotaでの検索 24 <?php 25 $terms = get_terms('sonota'); 26 foreach ($terms as $term): ?> 27 <label for="<?php echo esc_attr($term->slug); ?>"><input type="checkbox" name="sonota[]" value="<?php echo esc_attr($term->slug); ?>" id="<?php echo esc_attr($term->slug); ?>"><?php echo esc_html($term->name); ?></label> 28 <?php endforeach; ?> 29 30 31<input type="hidden" name="s" id="s" /> 32<input type="submit" value="この条件で検索する" class="square_btn"> 33

php

1#search.php 2<p><?php echo $wp_query->found_posts; ?>件のシャンプーがヒット</p> 3<?php 4$args = array( 5 'post_type' => 'shampoo', 6 'tax_query' => array( 'relation' => 'AND', 7 array('taxonomy' => 'price', 'terms' => $_GET['price'], 'field' => 'slug','operator' => 'AND'), 8 array('taxonomy' => 'nayami', 'terms' => $_GET['nayami'], 'field' => 'slug','operator' => 'AND'), 9 array('taxonomy' => 'sonota', 'terms' => $_GET['sonota'], 'field' => 'slug','operator' => 'AND') 10 ), 11); 12query_posts($args); 13 ?> 14 15<?php if ( have_posts()): ?> 16<?php while ( have_posts() ) : the_post(); ?> 17 <?php the_title(); ?> 18***省略 19<?php endwhile; ?> 20<?php endif; ?> 21

どのようにすれば改善されますでしょうか?
ご教授お願い致します。

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

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

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

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

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

guest

回答2

0

自己解決

<?php $args = array( 'post_type' => 'shampoo', 'tax_query' => array( 'relation' => 'AND', array('taxonomy' => 'price', 'terms' => $_GET['price'], 'field' => 'slug','operator' => 'AND'), array('taxonomy' => 'nayami', 'terms' => $_GET['nayami'], 'field' => 'slug','operator' => 'AND'), array('taxonomy' => 'sonota', 'terms' => $_GET['sonota'], 'field' => 'slug','operator' => 'AND') ), ); query_posts($args); ?> #下記の記載場所を変更しただけで解決。 <p><?php echo $wp_query->found_posts; ?>件のシャンプーがヒット</p>

投稿2018/02/28 02:28

yoshimitsu41

総合スコア36

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

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

0

リビジョンとかの関係ですかね…。
検証はしていませんが、下記のようにするとどうでしょう?

php

1<?php 2$args = array( 3 'post_type' => 'shampoo', 4 'tax_query' => array( 'relation' => 'AND', 5 array('taxonomy' => 'price', 'terms' => $_GET['price'], 'field' => 'slug','operator' => 'AND'), 6 array('taxonomy' => 'nayami', 'terms' => $_GET['nayami'], 'field' => 'slug','operator' => 'AND'), 7 array('taxonomy' => 'sonota', 'terms' => $_GET['sonota'], 'field' => 'slug','operator' => 'AND') 8 ), 9); 10$q = query_posts($args); 11 ?> 12 <p><?php echo $q->found_posts; ?>件のシャンプーがヒット</p> 13

投稿2018/02/28 02:03

kszk311

総合スコア3404

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

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

yoshimitsu41

2018/02/28 02:27

ご回答ありがとうございます! <p><?php echo $wp_query->found_posts; ?>件のシャンプーがヒット</p> の記載場所を変更するだけで解決しました! お騒がせしました。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問