絞り込み検索フォーム用のhtml定義ファイルを作成 ( searchform.php )
searchform.php
<?php
/*----------------------------------------------------
絞り込み検索フォーム ( searchform.php )
----------------------------------------------------*/
?>
<form method="get" id="searchform" action="<?php echo esc_url( home_url( '/' ) ); ?>">
<input type="text" name="s" id="s" value="<?php the_search_query(); ?>" />
<?php
if( isset( $_GET['cat'] ) ) {
$selected = absint( $_GET['cat'] );
} else {
$selected = 0;
}
wp_dropdown_categories( array(
'orderby' => 'id',
'hide_empty' => true,
'show_option_all' => 'カテゴリー選択',
'selected' => $selected,
) );
?>
<input type="submit" class="srcbtn" value=" 検 索 ">
</form>
searchform.php アップロード
テーマディレクトリの中に searchform.php をアップロードします
functions.php と同じフォルダにアップロードしてください。
検索フォームの呼び出し – PHP ( テンプレート )
get_template_part('searchform');
ショートコードで呼び出せるようにする
functions.php
/*----------------------------------------------------
絞り込み検索フォームを表示させるショートコード
----------------------------------------------------*/
if ( !function_exists( 'shortcode_searchform' ) ){
function shortcode_searchform () {
ob_start();
get_template_part('searchform');
return ob_get_clean();
}
add_shortcode('search', 'shortcode_searchform');
}
動作確認
当サイトのトップページ上部に設置している検索フォームがこちらの機能になります
除外したいカテゴリーを指定したい場合
// wp_dropdown_categories の条件指定(配列)に下記を追加 'exclude' => 'カテゴリーID', // カンマ区切りで複数指定
URL の cat の値は absint で数字にしてから使います(?cat=1&exclude=… のような値を混ぜられても、条件が書き換わりません)。条件は配列で渡します。
複数のときは、カンマ(,)で区切ります。
検索結果ページの調整
form の action で指定する先にもよりますが、サンプルのコードでは、テーマに search.php がなければ index.php が検索結果のページになります。

