プログラミングナレッジKnowledgeSide

2017.07.30

キーワード検索でカスタマイズした検索機能を実装する

Pocket

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 = wp_specialchars($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; ?>

 


 

このようにクエリを変更することで検索結果もコントロールすることができます。また検索件数などの表示など、細かいところもユーザビリティ向上のポイントになるのではないでしょうか。

 

 

Pocket

>>記事一覧に戻る