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

WordPressで検索機能を実装・カスタマイズする方法を紹介するアイキャッチ画像(検索フォームと虫眼鏡のイラスト付き)
「WordPressで検索機能を実装・カスタマイズする方法|初心者向けから本格対応まで解説!」のアイキャッチ画像。検索フォームのビジュアル付き。

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検索の導入もおすすめです。

参考リンク

🔗 関連記事