Исключение страниц из результатов поиска WordPress
Добавьте этот код в файл functions.php вашей дочерней темы, используя редактор кода, например Notepad++.
Вам потребуется заменить ID страниц в коде на свои собственные.
Исключение определенных страниц из результатов поиска
add_filter( 'pre_get_posts', 'exclude_pages_search_when_logged_in' );
function exclude_pages_search_when_logged_in($query) {
if ( $query->is_search && is_user_logged_in() )
$query->set( 'post__not_in', array( 1, 2, 3, 4, 5 ) );
return $query;
}
Исключение всех страниц из результатов поиска
add_action('pre_get_posts','exclude_all_pages_search');
function exclude_all_pages_search($query) {
if (
! is_admin()
&& $query->is_main_query()
&& $query->is_search
&& is_user_logged_in()
)
$query->set( 'post_type', 'post' );
}

Возможно, вам также понадобится проверка $query->is_main_query()
при исключении определенной страницы.

я также хотел больше, чем просто записи. $query->set('post_type', array( 'post', 'OTHER_POSTTYPE' ) );

Добавьте следующий код в файл functions.php вашей темы
Этот код отлично работает на сайте моего клиента.
//Исключить всё, кроме записей, из поиска WordPress
if (!is_admin()) {
function wse_search_filter($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
}
return $query;
}
add_filter('pre_get_posts','wse_search_filter');
}

Вы можете использовать этот код в файле вашей темы functions.php
. Обратите внимание, что я не тестировал этот код.
add_filter( 'pre_get_posts', 'SearchFilter' );
function SearchFilter( $query ) {
if ( $query->is_search ) {
$query->set( 'post__not_in', array( 2, 5, 12, 14, 20 ) );
}
return $query;
}
Идея взята с WPBeginner.
Условия использования на момент написания: "(...) Вы можете ссылаться на наши сниппеты и хаки в своих блогах/сайтах при условии, что вы указываете полную ссылку на оригинальную статью.
