こんにちは、今回はWordPressの検索結果から固定ページを除外する方法をご紹介したいと思います。
いくつか考えられる方法があると思うので、皆様の都合に合わせて解決策を探してみてください。
サンプルコードも用意したのでご自由にお使いください。
ではさっそくいきましょう。
例1 : 検索結果から固定ページを除外する
サンプルコード
//検索結果
function exclude_pages_from_search( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_search() ) {
$query->set( 'post_type', 'post' ); // 固定ページを検索結果から除外
}
}
add_action( 'pre_get_posts', 'exclude_pages_from_search' );
解説
こちらはexclude_pages_from_searchを使って$query->is_main_queryで条件分岐してpost(固定ページ)を除外しています。
このコードのいいところはHikakuSiteBuilderを含むカスタム投稿用に別途設置した検索フォームは影響を受けないということです。
例2 : 検索結果を投稿ページのみにする
サンプルコード
function SearchFilter( $query ) {
if ( $query -> is_search ) {
$query -> set( 'post_type', 'post' );
}
return $query;
}
add_filter( 'pre_get_posts', 'SearchFilter' );
解説
こちらは先ほど紹介したコードと異なり、検索結果を投稿のみにするコードです。
通常のブログサイトなどではこれで問題ありませんが、カスタム投稿用の検索フォームを設置している場合、そちらの検索フォームも検索結果を投稿のみにしてしまう場合があります。
まとめ
いかがでしたでしょうか。
検索結果を投稿ページのみにする方法はよく紹介されているのですが、検索結果から固定ページを除外する方法はあまり見かけなかったので紹介してみました。
皆様のご参考になればと思います。