WordPress で構築したサイトで、ユーザーが検索機能を利用した際に、検索結果の一覧ページに表示されている記事のタイトルや本文の中から、検索されたキーワードをハイライトして表示させる方法を紹介します。
テーマファイルの[functions.php]内に以下のコードを記述するだけなので非常に簡単です。
function wps_highlight_results($text) { if(is_search()){ $sr = get_query_var('s'); $keys = explode(" ",$sr); $text = preg_replace('/('.implode('|', $keys) .')/iu', '<span class="search-highlight">'.$sr.'</span>', $text); } return $text; } add_filter('the_title', 'wps_highlight_results'); add_filter('the_content', 'wps_highlight_results');
上記の例では、検索結果のページ(search.php)で、[<?php the_title(); ?> ]または[<?php the_content(); ?>]で出力された情報に対して、検索されたキーワードを「<span class="search-highlight">〜</span>」で囲みます。
もし検索結果ページで[<?php the_content(); ?>]ではなく[<?php the_excerpt(); ?>]で抜粋文を出力させている場合は、コードの最後の行を[add_filter('the_content', 'wps_highlight_results');
]に変更します。
最後に、出力された <span class="search-highlight">〜</span> を装飾するためにスタイルシートの設定をします。
span.search-highlight {background:yellow;}
ちょっとした一手間を加えるだけで、ユーザビリティの向上に役立ちます。
ぜひご利用ください。