Поиск только по записям/постам в 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

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

2 месяца ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

2 месяца ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

2 месяца ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

2 месяца ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…

2 месяца ago

Как управлять журналами событий из командной строки

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

2 месяца ago