- Web制作
WordPress 検索フォームごとに search.php を変える
カスタム投稿ごとに検索結果を変えたり、タームごとに変えたり。
search.php を複数作りたい時のお話です。
searchform.php の中で search_type を指定して、指定された search_type によって search.php を変えていきます。
《searchform.php》
<form role="search" method="get" id="searchform" class="searchform" action=""> <input type="hidden" name="search_type" value="blog"> <div id="keyword-search-wrap"> <input name="s" id="s" type="text" class="keyword-search" placeholder="例)キーワード" value="" required="required"> </div> <div id="submit-btn-wrap"> <input name="" type="submit" class="submit-btn" value="検索する"> </div> </form>
2行目:<input type=”hidden” name=”search_type” value=”blog”>
この部分で search_type を指定します。
type=”hidden” としているので実際には表示されません。
次に search_type が “blog” の時に search-blog.php が適用されるように functions.php に記述します。
《functions.php》
// 検索フォームごとに search.php を変える add_action('template_include', 'my_search_template'); function my_search_template($template) { $type = filter_input(INPUT_GET, 'search_type'); $new_template = ''; if ($type) { switch ($type) { case 'news': $new_template = STYLESHEETPATH . '/search-news.php'; break; case 'blog': $new_template = STYLESHEETPATH . '/search-blog.php'; break; default: $new_template = ''; } } if ($new_template) { if (file_exists($new_template)) { return $new_template; } } return $template; }
他のフォームを作りたいときは searchform-news.php などを作成して、呼び出したい部分で下のように呼び出します。
<div class="searchform-news"> <?php get_template_part('searchform-news'); ?> </div>
名古屋の Web 制作会社で 9 年半働いた後フリーランスに。中小企業のWEBサイト制作実績 100 サイト以上。ディレクション、デザイン、コーディング、WordPress 構築まで手掛けます。主にWeb系の情報をお届けします。