「製品」や「ニュース」といった投稿タイプがあり、各投稿ページやアーカイブページから検索した時に、検索結果を異なるテンプレートで表示させる方法のメモ。
カスタム投稿タイプ毎に検索結果を分岐させるコード
function.php に以下のコードを追記し、search-投稿タイプ.phpのファイルを用意することで分岐可能。
// テンプレート読み込みフィルターをカスタマイズする
add_filter('template_include','custom_search_template');
function custom_search_template($template){
// 検索結果の時
if ( is_search() ) {
// 表示する投稿タイプを取得する
$post_types = get_query_var('post_type');
// search-{$post_type}.php の読み込みルールを追加する
foreach ( (array) $post_types as $post_type )
$templates[] = "search-{$post_type}.php";
$templates[] = 'search.php';
$template = get_query_template('search',$templates);
}
return $template;
}