ミギムキ

[WordPress] 検索キーワードに色をつけて目立たせたい

検索結果からそれぞれのページに遷移したとき、検索したキーワードが書かれている箇所がわかりやすくなるよう、キーワードの部分を色付けしたい場合があります。
本記事ではGETパラメーターを使って検索キーワードの色付けを行うサンプルコードを紹介します。

検索結果テンプレート(search.php)

$keyword = $_GET['s']; $url = get_the_permalink() .'?keyword='. $keyword;

検索結果に表示された各ページのURLの末尾に「keyword」という名前のGETパラメーターを設定しています。
これでリンク先のページに検索されたキーワードの情報を引き継いでいます。

jQuery

jQuery(function($) { const keyword = new URLSearchParams(window.location.search).get('keyword'); if(keyword.length) { const splitKeywords = keyword.split(/\s+/); const content = $('article > .container'); let html = content.html(); splitKeywords.forEach(function(keyword) { html = html.replace(new RegExp(keyword, 'g'), '<mark>' + keyword + '</mark>'); }); content.html(html); } });

GETパラメーターとして設定された値を取得します。キーワードに半角スペースが含まれている場合は分割した上で、文中にキーワードが使用されている箇所があれば、markタグで囲む形式に置換します。
markタグには適宜スタイルを設定してください。

const content = $('article > .container');

置換対象となる文章は上記の一文で指定します。ヘッダーやフッターなど、色付けしたくない部分が含まれないよう、サイトの作りによって要素の指定方法を変えてください。

ご質問など受け付けています

記事の中でわかりにくかったところ、もっと知りたかったこと、間違っていることなど、何でもお気軽にご連絡ください。

ご連絡は下記フォームを利用いただくか、ツイッターアカウント@flat8migi宛てでもOKです。