WordPressの検索機能で通常の投稿とカスタム投稿タイプで結果画面を分ける方法

 Wordpressで絞り込み検索機能などをつけたい場合、投稿記事の検索結果とカスタム投稿タイプの検索結果を違うテンプレートで表示したい場合があります。

 今回はそのための準備と実際に使う方法について紹介していきます。

 

function.phpに下記を追記

 まず、検索結果を分けて表示する準備として、function.phpに次のコードを追記してください。

function enable_post_type_search_template($template){
  if ( is_search() ) {
    $post_types = get_query_var('post_type');
    
    foreach ( (array) $post_types as $post_type )
      $templates[] = "search-{$post_type}.php";
    $templates[] = 'search.php';
  
    $template = get_query_template('search',$templates);
  }
  return $template;
}
add_filter('template_include','enable_post_type_search_template');

serach-◯◯.phpという名前のファイルを作成する

 通常Wordpressでの検索結果はsearch.phpに表示されます。

そこで、カスタム投稿タイプの検索結果のみを表示するためのテンプレートsearch-◯◯.php(◯◯はカスタム投稿タイプの名前)を作成しましょう。

カスタム投稿タイプの検索フォームに次のコードを追記

 検索用のページは<form>タグを使って作成するかと思いますが、テキストやラジオボタンと共に「hidden要素」を加えておきましょう。

 nameの「post_type」とはカスタム投稿タイプを表していますので、「value」にカスタム投稿タイプの名前(半角英数字)を記入しましょう。

<input type="hidden" name="post_type" value="◯◯">

完成

 これで無事に検索結果を分けることができるようになりました^-^ノ

フォローする