WordPressで検索機能を実装・カスタマイズする方法|初心者向けから本格対応まで解説!

Contents
1. はじめに
WordPressサイトに検索機能を導入すると、ユーザーが求める情報に素早くアクセスできるようになります。しかし、デフォルトの検索機能は「投稿しか検索できない」「全文検索ではない」など、やや物足りない部分もあります。
この記事では、検索フォームの基本的な使い方から、検索対象の拡張、カスタマイズ方法までを分かりやすく解説します。テーマを自作・カスタマイズしている方や、検索体験を改善したい中級者にも役立つ内容です。
2. WordPressの標準検索の仕組み
WordPressの検索はとてもシンプルです。検索キーワードをURLの ?s=キーワード
というパラメータで渡すことで、検索結果を表示します。
🔹 検索フォームの出力方法
テーマファイルの任意の場所で、以下のテンプレートタグを使うと検索フォームを表示できます。
<?php get_search_form(); ?>
searchform.php
をテーマ内に作成すれば、フォームのHTMLを自由にカスタマイズできます。
🔹 検索結果ページは search.php
検索クエリが送られると、WordPressは search.php
テンプレートを使って結果を表示します。
このテンプレートが存在しない場合は index.php
が代わりに使われます。
3. 検索フォームをカスタマイズする
標準のフォームは機能的ですが、ユーザー体験を高めるためにHTMLを調整するのが一般的です。
🔸 例:プレースホルダー付き検索フォーム
searchform.php
<form role="search" method="get" action="<?php echo home_url( '/' ); ?>">
<input type="search" name="s" placeholder="キーワードを入力" />
<button type="submit">検索</button>
</form>
このようにすれば、より直感的で使いやすい検索フォームになります。
4. 検索結果の対象をカスタマイズ(functions.php編)
WordPressはデフォルトで「投稿(post)」だけを検索対象にしています。
ここに**固定ページ(page)やカスタム投稿タイプ(例:news、product)**を含めるには、functions.php
でクエリを調整します。
🔸 例:検索対象にカスタム投稿タイプを含める
functions.php
function my_search_filter($query) {
if ($query->is_search() && $query->is_main_query()) {
$query->set('post_type', ['post', 'page', 'product']);
}
}
add_action('pre_get_posts', 'my_search_filter');
これで、検索結果に投稿・固定ページ・カスタム投稿 product
が含まれるようになります。
5. カスタムフィールドやタクソノミーを検索対象にする(応用編)
標準の検索では、カスタムフィールド(ACFなど)やカスタムタクソノミーは対象外です。
これらを含めたい場合は、以下のような手段があります。
🔸 プラグインで対応する方法
- Search Everything:投稿・固定ページ・カスタムフィールドなどを柔軟に検索対象にできます。
- Relevanssi:全文検索、カスタムフィールド対応、検索結果の重みづけまで可能な高機能検索プラグイン。
6. 検索結果ページを整える
検索結果をわかりやすく表示するには、search.php
をしっかり設計することが大切です。
🔸 基本的なループ例
search.php
<?php if (have_posts()) : ?>
<h2>「<?php echo get_search_query(); ?>」の検索結果</h2>
<ul>
<?php while (have_posts()) : the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php else : ?>
<p>該当する記事は見つかりませんでした。</p>
<?php endif; ?>
ユーザーが検索キーワードを視認できるように表示することがポイントです。
7. よくあるエラー・注意点
s
以外のname属性を使うと検索が動かない(例:name="search"
→ ❌)pre_get_posts
の条件にis_main_query()
を入れないと、管理画面にも影響することがある- 投稿ステータス(非公開・下書きなど)は検索結果に出ない
8. まとめ
WordPressの検索機能は、シンプルでありながら柔軟に拡張できます。
まずはデフォルト機能を理解し、必要に応じてフォーム・検索対象・検索結果ページをカスタマイズしていきましょう。
検索精度や表示の工夫によって、サイトの使いやすさと滞在時間が大きく向上します。
より高度な対応として、絞り込み検索やAjax検索の導入もおすすめです。