WordPressの検索機能を簡単にカスタマイズする方法

13040401

WordPressの検索をサクッとカスタマイズする方法を紹介します。
カテゴリー別に検索させたい時のカスタマイズ方法です。
WordPressの検索フォームは基本的に、or検索です。and検索にする方法は別の機会に紹介します。

基本的な検索フォームの設置

使用しているテーマによっては、searchform.phpというテンプレートがあるので、それを呼び出すか、ウィジェット等で設定します。
任意の場所に検索フォームを設置したいような場合は、例として下記のようにタグを記述します。

通常の検索フォームの設置
ウォーターマーク(透かし文字)は自由に変更してください。

<form method="get" id="searchform" action="<?php bloginfo('url'); ?>/">
<input type="text" onfocus="if (this.value == 'キーワードから検索') this.value = '';" onblur="if (this.value == '') this.value = 'キーワードから検索';" value="キーワードから検索" name="s" id="s">
<input type="submit" id="searchsubmit" value="検索" />
</form>


検索結果から指定したカテゴリーを除外する

検索結果から、表示させたくないカテゴリーを指定できます。
テーマ編集からsearch.php(検索結果)を開きます。
ループの開始の上の行に下記のように記述します。
除外したいカテゴリーは、マイナス+カテゴリーIDです(-15等)カンマで区切ることで複数指定できます。(-15,-233等)

<?php query_posts($query_string . '&cat=-除外したいカテゴリーID'); ?> //この行を追加する
<?php if(have_posts()): while(have_posts()): the_post(); ?> //ループ開始タグ

ラジオボタンからカテゴリーを指定して検索

カテゴリー単位で検索をさせたい時のラジオボタンで指定する方法です。
選択カテゴリーが少ない時等は見やすくていいかもしれません。
見た目はCSSで調整してください。

valueにはカテゴリーIDの数字(任意)、id=”catカテゴリーID”を for=”catカテゴリーID”をそれぞれ指定してください。

<form method="get" id="searchform" action="<?php bloginfo('url'); ?>/">
<div id="search">
<input type="radio" value="0" name="cat" id="cat0" checked/><label for="cat0">全てのカテゴリー</label>
<input type="radio" value="7" name="cat" id="cat7" /><label for="cat7">カテゴリーID7</label>
<input type="radio" value="5" name="cat" id="cat5" /><label for="cat5">カテゴリーID5</label> //ラジオボタンを増やす場合はこの行をコピーして下にペーストして増やす。
</div>
<input type="text" onfocus="if (this.value == 'カテゴリーを選択して検索') this.value = '';" onblur="if (this.value == '') this.value = 'カテゴリーを選択して検索';" value="カテゴリーを選択して検索" name="s" id="s"><input type="submit" id="searchsubmit" value="検索" />
</div>
</form>

ドロップダウン(プルダウン)でカテゴリーを選択して検索

カテゴリーが多い場合はドロップダウンが便利です。
WordPressにはwp_dropdownというテンプレートタグがあって簡単に呼び出せます。

ドロップダウンでカテゴリーを選択
<div id="search">
<form method="get" action="<?php bloginfo( 'url' ); ?>">
<?php wp_dropdown_categories('depth=0&orderby=-1&hide_empty=1&show_option_all=カテゴリー選択'); ?>
<input name="s" id="s" type="text" /><input id="submit" type="submit" value="検索" />
</form>
</div>

ドロップダウンから指定したカテゴリーを除外する場合
除外するカテゴリーを指定します。複数指定の場合は、カテゴリーIDをカンマで区切ります(5,23,40等)。

<div id="search">
<form method="get" action="<?php bloginfo( 'url' ); ?>">
<?php wp_dropdown_categories('depth=0&exclude=除外するカテゴリーID&orderby=-1&hide_empty=1&show_option_all=カテゴリー選択'); ?>
<input name="s" id="s" type="text" /><input id="submit" type="submit" value="検索" />
</form>
</div>

公式サイト:wp_dropdown WP-codex→

テーマのカスタマイズ等のご相談/お問い合わせはこちら
個人の方でもお気軽にご相談ください