今回、わけあってWordpressに標準で付いている「検索」をカスタマイズしてみました。
WordPress標準の検索機能とは
ウィジットとかに置いておくこちらの検索ボックス。
普通は「投稿(記事)」「ページ(固定ページ)」から検索ができます。
ブログ全体から検索するのであれば問題ないのですが、
今回は「固定ページ」のみを検索する設定をしてみました。
WordPressの検索をカスタマイズするプラグイン
グーグル先生にお尋ねしたところ、以下のプラグインがあるそうなので試してみました。
- WP Custom Fields Search
機能的には素晴らしいのですが、ソフトウェアの更新が数ヶ月前から止まっているようです。僕のWordpress 4.4.2では、Worningが発生してしまったため、使用を断念しました。
- Search Everything
タイトルや本文のほか、コメントやタグなどを検索対象としたり、特定のカテゴリや記事、ページを除外する設定ができる素晴らしいプラグインです。
ただ、投稿全部を除外とか、固定ページのみとかの設定がなかったのが残念。除外カテゴリで全部のカテゴリを指定するのもありですが、カテゴリが増えた時(すぐ増えるので)に登録を忘れそうなのでこちらも使用をあきらめました。
自前でカスタマイズしてみる
ふたたび、グーグル先生にお尋ねしたところ、検索に関わる関数を修正することで出来るとのこと。
さっそくやってみました。
こちらのサイト様がとてもわかりやすかったです(というか、まるパクリ)。
ありがとうございます!!
![](https://i0.wp.com/www.imamura.biz/blog/wp-content/uploads/wordpresssearchpostonly02.png?fit=600%2C446&ssl=1)
やり方は、wordpressのテーマ内にある「functions.php」に関数を追記するだけです。
ただし、親テーマの「functions.php」に記載してしまうと、テーマがバージョンアップした時にこのファイルが上書きされる可能性があります。
なので、子テーマを用意して、そこの「functions.php」に記載しましょう。
function SearchFilter($query) { if ( !is_admin() && $query->is_main_query() && $query->is_search() ) { $query->set( 'post_type', 'page' ); } } add_action( 'pre_get_posts','SearchFilter' );
これだけで、wordpressの検索結果が「固定ページ」だけになります。
なお、
$query->set( 'post_type', 'page' );
の「page」を「post」にすると、投稿だけを検索するようになります。
以上で、固定ページに「黒ウィズクイズ」の答えを書くことで、検索機能を実装することが出来ました!
コメント