Как ограничить область поиска определенными типами записей

В последнее время вебмастеры стали активно использовать дополнительные типы записей, не ограничиваясь только постами и страницами, а добавляя к ним еще и записи портфолио, анонсы, события. Эти типы записей взяли на вооружение разработчики тем, активно включая подобные структуры в свои разработки. Произвольные типы записей используются не случайно, а в тех случаях, когда нужно отделить одну информацию от другой, а может быть и вовсе изолировать ее от общего потока. Поэтому часто встает вопрос контроля за областью поиска – нужно включать/исключать различные типы записей при поиске информации в блоге. Это можно сделать с помощью дополнительных плагинов, но я предпочитаю чистый код, внедренный в тему.

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

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

Этот код нужно добавить в файл functions.php используемой вами темы. Типы записей определяются массивом:

array('post','page')

В данном примере область поиска ограничена постами и страницами – только эти типы записей появятся среди результатов. Если вам нужно добавить другие типы записей, например, portfolio и news, то нужно расширить области – добавить эти пользовательские типы записей в список разрешенных записей для поиска:

array('post','page','portfolio','news')
Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

1 Kомментарий

  1. Подскажите, если нужен селектор в поиске? как это реализовать? К примеру:
    Есть 3-и раздела
    1) Маркет(woocommerce)
    2)Новости
    3)Обьявления(awpcp плагин)

    Если пользователь клацает маркет, то поиск только по вукомерсу, если новости то поиск только по записям, если обьявления то поиск по плагину awpcp. Сижу голову ломаю, кучу всего уже перепробовал, ни чего не получается…

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*