タグのAnd検索(tax_query,query_posts使用)
-
いつもお世話になります。
前回の質問から少し状況が変わりましたので再投稿させていただきます。投稿記事に登録されたタグをAnd検索できる
検索窓を設置したいと考えています。
And検索の機能は実装できましたが
明らかに存在しないタグをキーワードとして検索を掛けると
全ての投稿記事が返ってきてしまいます。ソースは次のように書いています。
search.php
<?php $keyword = explode(" ", wp_specialchars($s)); foreach ($keyword as $tag_name) { $tag_id[] = get_term_by('name', $tag_name, 'post_tag')->term_id; } $args = array ( 'post_type' => 'post', 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'post_tag', 'terms' => $tag_id, 'operator' => 'AND', 'field' => 'id', ) ) ); query_posts($args); echo $args;//以下テスト用ソース echo $tag_id;//$tag_idの中にはID番号が配列で格納されている foreach( $args as $key1 => $valu1 ){ echo "キー1"."【".$key1. "】".$valu1."<br />\n"; foreach( $valu1 as $key2 => $valu2 ){ echo "キー2".$key2. ":" .$valu2."<br />\n"; foreach( $valu2 as $key3 => $valu3 ){ echo "キー3".$key3. ":" .$valu3."<br />\n"; foreach( $valu3 as $key4 => $valu4 ){ echo "キー4".$key4. ":" .$valu4."<br />\n"; } } } } ?> <?php if (have_posts()) : ?> <p>「<?php echo wp_specialchars($s); ?>」の検索結果 <?php echo $wp_query->found_posts; ?> 件</p> <?php while (have_posts()) : the_post(); ?> <div class="article"> <?php the_content(); ?><span>while have posts</span> <!--<p class="spec"><a href="<?php the_permalink(); ?>" class="rm">続きを読む »</a></p>--> </div> <?php endwhile; ?> <div class="navigation"> <span>endwhile</span> <?php wp_pagenavi(); ?> </div> <?php else : ?> <div class="article"> <p>キーワードはみつかりません。</p> </div> <?php endif; ?> <span>endif</span>
以下、現在調査中の内容です。
・query_posts()の引数を指定しなかった場合は
最新記事を管理画面で指定した件数分取得するということはわかったのですが
上記ソースはtax_queryを使用しており
引数のところには以下のような値が返ってきています。
※上記テスト用ソースの抜粋キー1【tax_query】Array
キー2relation:AND
キー20:Array
キー3taxonomy:post_tag
キー3terms:Array
キー40:140
キー41:
キー3operator:AND
キー3field:idキー4の部分にタグのIDが入っています。
上記は一つ目のキーワードは存在し、
2つ目は登録されていない単語の検索結果です。
この条件でquery_postsが返す結果は
タグキー140の記事全てです。つまりor検索と同じ結果となります。仮にキーワードが2つとも登録されていない場合
キー40:
キー41:
となりquery_postsが返す結果は全ての記事を返します。上記2つのケースの場合、「キーワードはみつかりません。」と表示したいのですが
query_postsからループの機能がうまくいっていないのが現状です。relation:AND、operator:ANDなどのtax_queryパラメータも
渡せていると思うのですが、うまく機能していないように思います。要するに登録されたキーワード以外のものを含む検索は
「キーワードはみつかりません。」と表示したいのですが
うまい方法はありませんでしょうか。長乱文失礼致しました。
ご教示のほど宜しくお願いいたします。
- トピック「タグのAnd検索(tax_query,query_posts使用)」には新たに返信することはできません。