Lightningテーマの検索ワードをハイライトにする方法(タイトル部分のみ)

この記事では、WordPressの検索ページで入力されたワードを部分一致も含めて、タイトルの検索ワードをハイライト表示にする方法を解説します。Ajax検索にも対応しており、ページをリロードせずに検索結果を更新してもハイライトが適用されます。

1 実装のポイント

  • 部分一致にも対応した正規表現でハイライト
  • Ajax検索にも対応(動的に検索結果を更新してもハイライト可能)

2 functions.php にコードを追加


// ------------------------------
// 検索ワードを部分一致でハイライト
// ------------------------------
function highlight_search_terms_advanced($text) {
    if(is_search() && isset($_GET['s']) && $_GET['s'] != '') {
        $search_terms = explode(' ', wp_strip_all_tags($_GET['s']));
        foreach($search_terms as $term) {
            $term = trim($term);
            if($term != '') {
                $text = preg_replace(
                    '/(' . preg_quote($term, '/') . ')/i',
                    '<span class="search-highlight">$1</span>',
                    $text
                );
            }
        }
    }
    return $text;
}
add_filter('the_title', 'highlight_search_terms_advanced');
add_filter('the_content', 'highlight_search_terms_advanced');
add_filter('the_excerpt', 'highlight_search_terms_advanced');
補足:

  • 上記コードを functions.php に追加することで、検索結果ページのタイトルで検索ワードをハイライト表示できます。正規表現を使っているため、特殊文字が含まれるワードも対応可能です。
  • Ajax Search Liteでハイライトします。
  • Cocoonはハイライトしません。

3 汎用CSS


/* -----------------------------
/*検索ワードを部分一致でハイライト
----------------------------- */

.search-highlight {
    background-color: #fff59d; /* 背景色 */
    color: #000;               /* 文字色 */
    padding: 0 2px;            /* 左右にわずかな余白を追加 */
    border-radius: 2px;        /* 角を丸くする */
    font-weight: bold;          /* 文字を太字にする */
}

4 代用プラグイン

  • 「Relevanssi」:部分一致検索+検索ワードハイライトに対応
  • 「Ajax Search Lite」:Ajax検索+ハイライト表示

5 まとめ

  • 部分一致も含めた正規表現でPHP側でハイライト
  • Ajax検索やライブ検索でも動的にハイライト可能
  • テーマごとのCSS調整で見やすさを最適化