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

投稿日:2023.01.19.
更新日:2025.06.07.

WordPress

プラグイン

株式会社TREVOの月額制ホームページ制作サービス
PR

板浪 雅樹
執筆・編集 板浪 雅樹

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 を分けたい場合はこちらの記事も参考になります。

カスタム投稿タイプ毎にsearch.phpを設定する方法

関連の記事

CONTACT

ホームページ制作・Web制作に関するご質問やご相談は、
下記フォームよりお問い合わせください。

無料のお見積りや初回のご相談も承っておりますので、「まだ検討中」「ちょっと話を聞いてみたい」といった段階でも大歓迎です。
現状のホームページ診断も無料で実施中です。

0120-83-8567
平日9:00~18:00まで 定休日:土 日 祝