ブログ内検索で記事ページのみヒットさせる

WordPressのサイト内検索で固定ページを除外して表示する

pre_get_postsフィルターでpost_typeを指定して除外

WordPressには標準でブログ内検索機能が付いている。

標準の状態だと記事ページだけでなく、固定ページも検索にヒットするため、そのままだと都合が悪い場合がある。固定ページを検索結果から除外するためには、データベースに発行するクエリで記事ページに限定する方法でうまくいく。

ネットで検索してみたところ、

Excluding Pages From Search Results

wordpress.orgのサポートページにそのままの情報が載っていたので、今回はそのまま利用することにした。

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

add_filter('pre_get_posts', 'search_result_excluded_page');

pre_get_postsフィルターフックを利用すれば、ページの種類に応じてSQLの条件をカスタマイズすることが出来る。

カテゴリーページをSEOに強くする

のエントリーでは、ページの種類に応じて記事の表示件数をカスタマイズする方法を以前書いた。

WordPressをカスタマイズするなら知っておきたいノウハウ。

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ブログ内検索で記事ページのみヒットさせるの記事にコメントを投稿