Исключение страниц и некоторых постов из поиска wordpress

Часто случается, что включение в результаты поиска некоторых страниц и даже некоторых постов может сбить читателя с толку. Бывает полезно исключить страницы, не совпадающие с общей тематикой блога из результатов поиска. Также могут быть и посты, которые не хочется показывать в  общем списке случайных находок.

Для проведения манипуляций нам понадобится файл function.php, в который надо будет добавлять некоторые коды.

Для того, чтобы исключить из результатов поиска все имеющиеся на блоге статические страницы, надо добавить в файл function.php следующий код:

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

Можно сделать предложенный код более гибким и исключать из поиска страницы и посты только с выбранными ID. В этом случае необходимо добавить в файл function.php следующий код:

function SearchFilter($query) {
    if ($query->is_search) {
        $query->set('cat','4298,1015');
    }
    return $query;
}
add_filter('pre_get_posts','SearchFilter');

В приведенном примере числа 4298 и 1015 являются ID страниц и посто, которые необходимо исключить из результатов поиска.
Этот пост опубликован в рамках постоянно пополняемого цикла статей «Хитрости и хаки wordpress». При использовании поста использованы материалы с блогов WpRecipes и Bavotosan.com

  1. Тимур

    Спасибо. Ваш код самый простой из всех, которые мне пришлось просмотреть при поиске решения. Я на своем новом сайте собираю все полезные «кусочки кода», которые нахожу в сети, поэтому сделаю репост и сошлюсь на вас. Еще раз спасибо за простое и практичное решение.

  2. Ив Ле

    Вы не правы в обоих случаях. Ваши примеры не исключают, а оставляют для поиска только указанное. Так, в последнем примере будет выводится только те, что соответствуют указанным ID. А с первым примером, например, не работает поиск по картинкам внутри админки.

Добавить комментарий

Ваш e-mail не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.