FE Advanced Search(検索用プラグイン)で検索結果のテンプレートを切り替える方法

執筆・編集 板浪 雅樹2005年から WEB 業界一筋。500サイト超を手がける SEO・WordPress のエキスパート。「公開後こそ本番」を掲げ、データ分析とユーザー視点で成果を引き出す運用を提案。

2005年に制作会社へ入社後、プログラマーからキャリアをスタート。サーバー構築・データベース設計で培った技術を強みに、WordPress テーマ/プラグイン開発やサイト移行の難案件を多数担当してきました。
2010年以降は SEO エンジニアとしても活動領域を拡大。コンテンツ設計・内部リンク最適化・高速化チューニングにより、競合の激しいビッグキーワードで上位獲得を実現してきました。
現在は TREVO のウェブディレクターとして、要件定義から運用改善まで一気通貫でリード。AI ライティングや GA4/Looker Studio を活用したレポーティング手法を開発し、「数字で説明できるサイト運用」をポリシーにクライアントの ROI 最大化を支援しています。
趣味/強み:筋トレとランニングで日々の集中力をキープ。複雑な課題を“仕組み”で解決するのが得意。
モットー:「サイトは資産。改善を止めた瞬間から価値は目減りする」
WordPressで高度な絞り込み検索を実現できる便利なプラグイン「FE Advanced Search」。
複数のカスタム投稿タイプを扱っているサイトでは、検索フォームごとに異なる検索結果テンプレートを使いたいケースも多いのではないでしょうか?
実はこの機能、公式マニュアルでも紹介されていますが、実務でよく使うため、ここでも簡単に解説しておきます。
詳しくは、FE Advanced Searchの公式マニュアル内の以下ページでも確認できます。
使い方
search.phpに下記の条件分岐を設定して、それぞれのテンプレートを作成します。
□:フォームナンバー
「get_template_part( ‘search’, ‘form0’ );」でテンプレート名を設定します。
この形だと、search-form0.phpがテンプレートになります。
<?php
// フォームID=0から検索された場合
if ( isset( $_GET['fe_form_no'] ) && '□' === $_GET['fe_form_no'] ) {
//search-form0.phpを読み込む
get_template_part( 'search', 'form0' );
}
// フォームID=1から検索された場合
elseif ( isset( $_GET['fe_form_no'] ) && '□' === $_GET['fe_form_no'] ) {
//search-form1.phpを読み込む
get_template_part( 'search', 'form1' );
}
// それ以外(WordPress標準の検索窓など)
else {
//archive.phpを読み込む
get_template_part( 'archive' );
}
?>
function.phpで切り替える方法
各検索フォームのIDに応じて、自動的に「search-for○○.php」というテンプレートファイルに振り分けられます。
そのため、あらかじめ各IDに対応する search-for○○.php ファイルをテーマ内に設置しておく必要があります。
なお、テンプレートファイル名は任意の名前に変更可能です。
function custom_search_template($template) {
if (is_search() && isset($_GET['fe_form_no'])) {
$form_no = sanitize_text_field($_GET['fe_form_no']);
$custom_template = '';
switch ($form_no) {
case '0':
$custom_template = 'search-form0.php';
break;
case '1':
$custom_template = 'search-form1.php';
break;
}
if ($custom_template && locate_template($custom_template)) {
return locate_template($custom_template);
}
}
return $template;
}
add_filter('search_template', 'custom_search_template');
関連記事のご紹介
検索結果テンプレートの切り替えだけでなく、カスタム投稿タイプごとに search.php を分けたい場合はこちらの記事も参考になります。
関連の記事
-
1,300年前の琵琶とルイビトンの柄
TREVOスタッフ
-
今さら聞けないSSL化(HTTPS化)の必要性とメリット
衣川知秀
-
板浪雅樹
-
TREVOスタッフ
-
板浪雅樹
-
外出先でもブログ記事やホームページ更新の為にノートパソコン用スタンドを試してみる
TREVOスタッフ