検索
0

カスタムフィールドも検索対象にする

WordPress(ワードプレス)標準の便利な検索機能。
WordPressバージョン3.3.1の今現在、
通常の「投稿」だけではなく「固定ページ」や「カスタム投稿タイプ」も検索対象としくれるが、
カスタムフィールドの値は検索対象とはならない。
CMS的な使い方をして通常の投稿フィールドを一切使わない時など検索の意味がなくなってしまう….。
そんな時は、プラグインSearch Everythingを利用すれば実に簡単にカスタムフィールドも検索対象にすることが可能。


管理画面サイドメニュー
「プラグイン」⇒「新規追加」
Search Everythingと入力して「プラグインの検索」をすると一番上に出てくるので、
「今すぐインストール」して「有効化」。
カスタムフィールドも検索対象にする01
インストール⇒有効化が完了すると、サイドメニュー「設定」項目の中にSearch Everythingが追加されるので、そこをクリック。
カスタムフィールドも検索対象にする02
1つ目(上部)の赤枠の部分、
「全てのカスタムフィールドを検索」
を「Yes」にして、「設定を更新」すれば検索時にカスタムフィールドに入力された値まで検索対象とすることが出来る。

2つ目(下部)の赤枠部分、
「指定した ID の投稿やページを検索対象に含めない:」
ここにIDを入れたページは検索対象から除外される。(画像ではページID、1と9と4を除外)
会社概要やプライバシーポリシーなど固定ページで作成したモノを除外したい場面は多々あるかと思うので、これも便利です。

ちなみに、
プラグインを使わずに任意のページを検索から除外する方法は、
Webデザインレシピ様の
WordPress のよくあるカスタマイズコード functions.php 多め
「9. 検索結果から指定したページを削除」に、記載されています。
functions.phpに、下記コードを追記するだけ

function fb_search_filter($query) {
  if ( !$query -> is_admin && $query -> is_search) {
    $query -> set('post__not_in', array(28, 35) );
  }
  return $query;
}
add_filter( 'pre_get_posts', 'fb_search_filter' );

単純に検索結果に特定のページを表示させたくないだけだったらプラグインを使わないこの方法がスマートで良いかもしれません。

検索結果から特定のページを除外するのは、検索結果用のテンプレート(search.php)のループで、検索結果として表示したくないページを指定すれば可能なハズ。
反対に考えると、
「固定ページ」や「カスタム投稿タイプ」がデフォルトで検索対象になっているからといって、利用しているテーマの検索結果用のテンプレート(search.php)のループが、通常の「投稿」しか表示できないようになっていたら意味がない….ということになる。

検索結果テンプレート(search.php)についてはまた、後日。