【WordPress】サイト内検索で特定ページ・記事を表示させない方法

コードを記述する場所

function.phpに書き込みます。

基本的には、以下のコードをコピペでOKです(IDだけ要修正)。

function.phpをいじる前は、念のためバックアップを取っておきましょう。

IDで特定のページ・記事を除外する

function search_pre_get_posts( $query ) {
if ( $query->is_search && !is_admin() ){
$query->set( 'post__not_in', array(1,2,3,4) );
}
return $query;
}
add_action( 'pre_get_posts', 'search_pre_get_posts' );

IDで特定カテゴリーの投稿を除外する

function search_pre_get_posts( $query ) {
if ( $query->is_search && !is_admin() ){
$query->set('category__not_in', array(1,2,3,4) );
}
return $query;
}
add_action( 'pre_get_posts', 'search_pre_get_posts' );

全ての固定ページを除外する

function mycus_search_filter_post_only_func( $query ) {
    if ( $query->is_search() && $query->is_main_query() && ! $query->is_admin() ) {
        $query->set( 'post_type', 'post' );
    }
    return $query;
}
add_filter( 'pre_get_posts', 'mycus_search_filter_post_only_func' );

コメントを残す

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