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の条件をカスタマイズすることが出来る。
のエントリーでは、ページの種類に応じて記事の表示件数をカスタマイズする方法を以前書いた。
WordPressをカスタマイズするなら知っておきたいノウハウ。