WordPress:検索結果をカスタマイズする

  • Posted on
  • Category : WordPress
WordPress:検索結果をカスタマイズする

WordPressの検索機能は、デフォルトのままでは投稿記事だけでなく固定ページも検索結果に出てきてしまいます。検索結果に固定ページを出したくない場合や特定の記事を出したくない場合もあると思うので、それらを除外するカスタマイズをメモ兼ねて紹介します。

以下で紹介している方法は、いずれもfunctions.phpを使用します。
テーマ内にfunctions.phpがない場合は作成してください。

WordPress:検索結果をカスタマイズする 目次

  1. 検索結果に投稿記事のみを表示させる
  2. 検索結果から指定した記事やページを除外する

1. 検索結果に投稿記事のみを表示させる

WordPressのデフォルトの検索機能は、投稿記事だけでなく固定ページも検索対象となっており、条件が一致すれば固定ページも検索結果として表示されてしまいます。

例えば、このブログでいう「About」や「Contact」などは固定ページで作成しているのですが、投稿記事ではないこれらのページもデフォルトのままでは検索結果として表示されます。
別に表示されてもいいならそのままでいいんですが個人的にはそれが嫌だったので、以下のコードをfunctions.phpに記述して固定ページを検索対象から除外しています。

functions.php

function SearchFilter($query) {
	if ($query->is_search) {
		$query->set('post_type', 'post');
	}
	return $query;
}
add_filter('pre_get_posts','SearchFilter');

目次へ

2. 検索結果から指定した記事やページを除外する

上記は固定ページを検索結果から除外する方法でしたが、こちらは特定のページを検索対象から除外する方法です。
固定ページだけでなく、投稿記事の中にも検索対象にしたくないものがある場合はこちらを使用するのが良いと思います。

functions.php

function fb_search_filter($query) {
	if ( !$query -> is_admin && $query -> is_search) {
		$query -> set('post__not_in', array(5, 10, 20, 32, 48) );
	}
	return $query;
}
add_filter( 'pre_get_posts', 'fb_search_filter' );

上記をfunctions.phpに記述し、指定されたIDのページを検索対象から除外されるようにします。
3行目に記述してある$query -> set(‘post__not_in’, array(5, 10, 20, 32, 48) );の部分で表示したくないページIDを指定しているので、上記ソースで「5, 10, 20, 32, 48」となっている部分に表示したくないIDを記述していきます。

目次へ

Back to Top

WordPress:検索結果をカスタマイズする

WordPress:検索結果をカスタマイズする

/ WordPress

Tagged with:

NxWorld

Sorry... doesn't support your browser

To get the best possible experience using our site we recommend that you upgrade to a modern web browser.NxWorldではご利用中のブラウザサポートはしていません。
Internet Explorerのアップグレード行う、もしくはその他のブラウザを使用しての閲覧をお願いします。