WordPressサイトで便利なキーワード検索ですが、コードをカスタマイズすることで検索条件などもコントロールすることができます。また合わせて検索結果にもユーザーにわかりやすい表示サンプルを見ていきたいと思います。
検索外対象のページを指定する
検索結果に表示させたくない投稿ページがある場合には下記のような関数をfunctions.phpに追記することで実装できます。
【functions.php】
function SearchFilter($query) { if ( !is_admin() && $query->is_main_query() && $query->is_search() ) { $query->set( 'post__not_in', array(****,****,****) ); // 検索対象外とするページのIDを入力 } } add_action( 'pre_get_posts','SearchFilter' );
検索結果と合わせて検索時のキーワードと件数を表示させる
検索結果に加えて検索時に入力したキーワードと、トータルの検索結果件数も合わせて表示させることでユーザビリティが向上します。検索結果を表示させるページテンプレートであるsearch.phpのクエリに下記のように追記します。
【search.php】※ループ部分のみ
<?php $allsearch = new WP_Query("s=$s"); $key = esc_html($s, 1); $count = $allsearch->found_posts; $countSum = $wp_query->found_posts; if($count!=0){ // 検索結果を表示:該当記事あり echo '<p>「<strong>'.$key.'</strong>」で検索した結果、<strong>'.$countSum.'</strong>件の記事が見つかりました。</p>'; } else { // 検索結果を表示:該当記事なし echo '<p>「<strong>'.$key.'</strong>」で検索した結果、関連する記事は見つかりませんでした。</p>'; } ?> <?php if(have_posts()) : while(have_posts()) : the_post(); ?> <div> <h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1> <p><?php the_excerpt(); ?></p> <a href="<?php the_permalink(); ?>">この記事を見る</a> </div> <?php endwhile; endif; ?>
このようにクエリを変更することで検索結果もコントロールすることができます。また検索件数などの表示など、細かいところもユーザビリティ向上のポイントになるのではないでしょうか。