WordPress 検索機能を実装する方法

Last update 
/ Posted by Takumi Hirashima

WordPress で検索機能を実装する方法を紹介します。
例えば、WordPress 内に投稿された記事を特定のキーワードで検索したい時などに便利な方法です。

  1. 検索フォームの用意
  2. テンプレートの埋め込み
  3. 検索ページの用意
  4. 検索対象の絞り込み

検索フォームの用意

まずは searchform.php を作成して検索フォームのテンプレートを用意します。

<form method="get" id="searchform" action="<?php bloginfo('url'); ?>">
  <input type="text" name="s" id="s" placeholder="SEARCH"/>
  <button type="submit">検索する</button>
</form>

テンプレートの埋め込み

検索フォームのテンプレートを任意の箇所に設置する場合は、次のコードを追加します。

<?php get_search_form(); ?>

検索ページの用意

検索結果を表示するための search.php テンプレートを用意します。

<?php if (have_posts()): ?>
<?php 
  if (isset($_GET['s']) && empty($_GET['s'])) { 
    echo '検索キーワード未入力';
  } else {
    echo '“'.$_GET['s'] .'”の検索結果:'.$wp_query->found_posts .'件';
  }
?>
<ul>
<?php while(have_posts()): the_post(); ?>
  <li>
    <a href="<?php the_permalink(); ?>"><?php echo get_the_title(); ?></a>
  </li>
<?php endwhile; ?>
</ul>
<?php else: ?>
検索されたキーワードにマッチする記事はありませんでした
<?php endif; ?>

検索対象の絞り込み

デフォルトの投稿以外に、カタスタム投稿タイプを検索対象に含める場合は、次のコードを functions.php に追加します。
$query->set に追加したいカスタム投稿タイプのスラッグを追加してください。

/* 【出力カスタマイズ】投稿タイプを指定して検索対象を絞り込む */
function SearchFilter($query) {
  if ( !is_admin() && $query->is_main_query() && $query->is_search() ) {
    $query->set( 'post_type', array('post', 'hogehoge') ); // カスタム投稿タイプ hogehoge を追加
  }
}
add_action( 'pre_get_posts','SearchFilter' );

まとめ

WordPress で検索機能を実装する方法を紹介しました。

スポンサーリンク