Поиск только по записям/постам в WordPress

Если у вас в архитектуре проекта есть собственные типы записей (post_type), или вы не хотите, чтобы в поисковую выдачу попадали страницы (page), тогда у меня для вас есть отличное решение!


Идея заключается в том, чтобы перед запросом к БД поставить условие:

  1. Мы находимся в публичной части сайта;
  2. Наш запрос приходит из формы поиска.

В случае соблюдения этих условий мы задаем для $query тот тип записей, который нужно. В нашем случае это post.

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

Это базовый пример для решения конкретной задачи. Его легко модифицировать и подогнать под похожие задачи.


admin

Share
Published by
admin

Recent Posts

Лучшие дистрибутивы Linux

Если говорить о том, какие лучшие дистрибутивы Linux мы знаем, то этот список может быть…

6 дней ago

Лучшие браузеры для Ubuntu

Хотя Ubuntu и поставляется со встроенным обозревателем Firefox многие пользователи считают что это не самая…

6 дней ago

Установка Remmina Ubuntu 16.04 или 16.10

Что такое Remmina? Remmina — это совершенно бесплатный и свободный клиент так называемого удаленного рабочего…

6 дней ago

Плюсы Ubuntu

Как мы знаем, Ubuntu это самая популярная сборка из систем на базе ядра Linux. У…

6 дней ago

Выбираем ноутбук для Linux

Выбор ноутбука для каждого пользователя это довольно кропотливый процесс. Люди стараются подобрать ноутбук который будет…

6 дней ago

Установка Linux рядом с Windows 10

Если вы решили ознакомиться с операционной системой Linux более детально и задались вопросом как установить…

6 дней ago