ワードプレスには、優れた検索機能がついていますよね。この検索機能は拡張性豊かなワードプレスの特色を受け継いで様々なカスタマイズが可能です。今回は検索機能をプラグインやfunctions.phpへのカスタマイズコードの挿入などを通して拡張する方法を目的別にご紹介いたします。

Search Everythingでカスタム投稿や、カスタムフィールド、コメントを検索結果に含める

プラグインSearch Everythingは、でカスタム投稿や、カスタムフィールド、コメント等様々なワードプレスのコンテンツを検索クエリで検索する対象に含めてくれるプラグインです。特にカスタムフィールドを活用しているサイト様ではこちらを検索結果に含めたいという需要は結構あるのではないでしょうか?

Search Everythingで検索に含めたいコンテンツを指定する

Search Everythingを使って検索クエリの対象を増やすのはとても簡単です。管理画面>プラグイン>新規追加でSearch Everythingと検索ののちプラグインをインストールされたら、設定>Search Everything より検索対象とされたいカスタムなコンテンツをチェックして保存されてください。

検索でカテゴリー選択(フィルター)を追加する

次に検索フォームの下に、カテゴリーの絞込検索が可能なプルダウンを挿入する方法をご紹介します。カテゴリーごとに非常に大きな記事数がある場合はユーザービリティ―が向上しますのでこの機能拡張はお勧めのものとなっております。

この機能の実装には、Category Wise Searchプラグインを導入し、管理画面>ウィジェット よりCategory Wise Searchウィジェットをサイドバーにドラッグして追加されてみてください。

すると、カテゴリー選択が検索欄に追加されます。

またこのプラグインは、Extrude Categoryの欄に含めたくないカテゴリーをコンマ区切りで入力することで特定のカテゴリーを選択時に非表示にすることが可能です。

検索結果数を表示するには?

テーマの検索結果表示テンプレートに少々カスタマイズを加えることで検索結果の数を表示することが可能です。検索結果数を取得するプログラムは下記のようなものとなります。

<?php
global $wp_query;
echo $wp_query->found_posts.' 件の検索結果が見つかりました';
?>

このコードを例えば、検索クエリを表示している部分の下などに追加されると検索結果数を任意の場所にページ中表示できます。
検索結果の表示テンプレートは一般に、外観>テーマの編集>右メニューの search.phpというファイルが担っていますのでこちらにコードを追加されてみてください。

検索にカスタム投稿の選択(フィルター)欄を追加する

カスタム投稿は、プラグイン Custom Post Type UI で作成できる本来の投稿とは違うタイプの投稿です。このプラグインを利用すればブログをワードプレス上に複数持てるような機能が追加されるとお考え下さい。
またこのカスタム投稿に、ブログなどとは全く別の概念として管理画面から追加、修正できるコンテンツを作成することも可能です。
下の画像は、スタッフというカスタム投稿タイプを追加した例です。

このカスタム投稿を選択して検索する仕組みをテーマに追加するには下記のように、管理画面>外観>テーマの編集 よりsingle.php(投稿の表示をするテーマファイル) , post.php(投稿の表示をするテーマファイル) , sidebar.php(サイドバーの表示を行うテーマファイル)などの検索フォームをおきたい場所に追加します。

下図はサイドバーに配置した事例です。

<form role="search" method="get" id="searchform" action="<?php echo home_url( '/' ); ?>">
<input type="text" name="s" id="s" value = "" /><br />
 
<input type="checkbox" name="post_type[]" value="post" /><label>投稿</label>
<input type="checkbox" name="post_type[]" value="staff" /><label>スタッフ</label>
 
<input type="submit" id="searchsubmit" value="検索" />
</form>

コードの解説
●value=”staff” カスタム投稿のスラグを記載します。value=”post”はワードプレスの最初から表示されている投稿を指します。
●<label>スタッフ</label> の部分はラベル名ですので任意の名称です

検索結果から除外したいコンテンツを指定する

プラグイン Simply Exclude を利用すると検索結果から除外したいコンテンツを簡単に指定できるようになります。

プラグインをインストールされたら、管理画面のSimply Excludeボタンより、 カテゴリー(タクソノミー)、カスタム投稿、ユーザーなどを事細かに検索結果に含めるか設定することが可能となります。

例として先ほど追加したスタッフというカスタム投稿を検索結果から除外するには、上部Post Typeタブの中のスタッフという部分でDisableを選択します。

検索フォームを投稿の中に表示する

ショートコードで投稿の中やお好きな場所に検索フォームを追加するコードをご紹介します。まず、外観>テーマの編集 より右メニューのfunctions.phpを選択し最下部に下記をコピペして追加します。

function insertsearchform( $form ) {
 
 $form = '<form role="search" method="get" id="searchform" action="' . home_url( '/' ) . '" >
 <input type="text" value="" name="s" id="s" />
 <input type="submit" id="searchsubmit" value="検索" />
 </form>';
 
 return $form;
}
 
add_shortcode('insertsearch', 'insertsearchform');

※?> というPHPコードが閉じる前に挿入してください。このコードはinsertsearchというショートコードで任意の場所に検索フォームを表示するためのコードです。

追加されたら、投稿に [insertsearch] と記載いただくとその場所に検索フォームが表示されるようになります。

検索機能のバグ 日本語で複合キーワードで検索できないときは?

ワードプレスには日本語関連の扱いで昔から検索などにバグがあることが知られています。有名なのが、検索時に全角空白で複数のキーワードを指定すると複合キーワード検索できないというものがあります。
これらのバグを修正するためにワードプレスの日本語版に必ず含まれている、WP Multibyte Patchは有効とされることを進めいたします。
もしこのプラグインが無い場合は下記からダウンロード可能です。

WP Multibyte Patchのダウンロード
WP Multibyte Patchの日本語の説明

ワードプレスの様々なカスタマイズご対応いたします。ワードプレスドクターにお気軽にご相談、ご依頼くださいませ