検索結果に含まれない単語を検索した場合、全件表示される
-
初めて利用させていただきます。
http://welcustom.net/extend-custom-fields-in-search/
こちらのブログに記載されている内容を元に、カスタムフィールドやカテゴリ、ポストから検索できるようにsearch.phpをカスタマイズしましたが、
一致する検索結果は表示されるのですが、全く関係ない文字列を検索した場合、全件表示されてしまいます。当方、wordpressの知識が浅く、手詰まりになってしまいました。
解決策をどなたかご教示いただけますでしょうか。WordPress 4.3.1
オリジナルのテーマを使用しています。<?php //検索欄が未入力だった場合 if (isset($_GET['s']) && empty($_GET['s'])) { ?> <p>No results.</p> <?php //検索欄が入力されていた場合以下 } else { ?> <?php if(have_posts()): ?> <?php else : ?> <?php global $wpdb; $keyword = get_search_query(); $keyword = '%' . like_escape( $keyword ) . '%'; // カスタムフィールド全部から検索 $post_ids_meta = $wpdb->get_col( $wpdb->prepare( " SELECT DISTINCT post_id FROM {$wpdb->postmeta} WHERE meta_value LIKE '%s' ", $keyword ) ); // タイトルと投稿内容から検索 $post_ids_post = $wpdb->get_col( $wpdb->prepare( " SELECT DISTINCT ID FROM {$wpdb->posts} WHERE post_title LIKE '%s' OR post_content LIKE '%s' ", $keyword, $keyword ) ); // カテゴリから検索 $term_ids = $wpdb->get_col( $wpdb->prepare( " SELECT DISTINCT term_id FROM {$wpdb->terms} WHERE name LIKE '%s' ", $keyword) ); //ヒットしたカテゴリーが所属する投稿 $term_id = implode(",", $term_ids); $post_ids_term = $wpdb->get_col( $wpdb->prepare( " SELECT DISTINCT object_id FROM {$wpdb->term_relationships} WHERE term_taxonomy_id LIKE (%s) ", $term_id) ); $post_ids = array_merge( $post_ids_meta, $post_ids_post, $post_ids_term ); // Query arguments $args = array( 'post_type' => 'post', 'post_status' => 'publish', 'post__in' => $post_ids, ); $query = new WP_Query( $args ); if ( $query->have_posts() ): while ( $query->have_posts() ) : $query->the_post(); ?> <!-- ループの中身 --> <?php endwhile; else: ?> No results. <?php endif; ?> <?php wp_reset_query(); ?> <?php endif; ?>
2件の返信を表示中 - 1 - 2件目 (全2件中)
2件の返信を表示中 - 1 - 2件目 (全2件中)
トピック「検索結果に含まれない単語を検索した場合、全件表示される」には新たに返信することはできません。