Янв
10
8

Хаки для поиска по категориям + исключение страниц в результатах

wordpress поискО некоторых особенностях работы стандартного поиска в вордпресс я уже писал ранее. Например, статья про улучшение страницы результатов поиска рассказывает как выводить информацию о количестве найденных записей и подсвечивать искомую фразу. Сегодня опубликую еще парочку полезных хаков (сниппетов), позволяющих улучшить работу системы — попробуем убрать из результатов нежелательные посты и выполнить что-то вроде поиска по категориям. Данные задачи могут показаться несколько специфичными, и пригодятся далеко не каждому пользователю WP, но ситуации бывают разные (как минимум, хаки будут полезны тем, кто зарабатывает на биржах ссылок GoGetLinks и других). Итак, поехали…

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

По умолчанию в WordPress при поиске отображаются не только ссылки на найденные посты (post), но и страницы (page). Если ваш сайт использует формат страниц достаточно активно, убирать эту опцию не желательно. С другой стороны, когда они выполняют второстепенную роль (содержат контакты, описание проекта, карту сайта или рекламные публикации), имеет смысл их исключить.

Для этого заходим в function.php, где и размещаем код:

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

Сохраняем его и проверяем корректность работы. Почитать о том как правильно добавлять код сниппетов в файл function.php можно тут. Либо используйте модуль Code Snippets.

Хак исключения из поиска записей по ID

Допустим, вам нужно убрать из результатов поиска не все страницы, а лишь некоторые конкретные записи. Следующий хак поможет это сделать. Причем он срабатывает не только для элементов типа Page, но и подходит для обычных постов блога (Post). Перед добавлением кода узнайте в админке ID соответствующих публикаций. Хак размещаете в function.php.

function myexclude_search_filter( $query ) {
  if ( ! $query->is_admin && $query->is_search && $query->is_main_query() ) {
    $query->set( 'post__not_in', array( 1042, 756 ) );
  }
}
add_action( 'pre_get_posts', 'myexclude_search_filter' );

Здесь числа 1042 и 756 — ID заметок, которые исключаются из поиска. Поставьте вместо них свои значения.

Поиск в WordPress по категории

Не смотря на название хака данное решение очень похоже на предыдущие. Мы используем тот же прием с классом WP_Query и фильтром pre_get_posts для правки результатов поиска. Однако в этот раз отобразим на странице только те посты, которые будут принадлежать заданным категориями. Если не смотреть на саму реализацию, то фактически у нас получается поиск по рубрикам.

Перед размещением кода в файле функций function.php узнайте ID категорий, участвующих в поиске. Сниппет имеет вид:

function searchcategory($query) {
	if ($query->is_search) {
		$query->set(category__in, array(1,84));
	}
	return $query;
}
add_filter('pre_get_posts','searchcategory');

Значения 1 и 84 — это ID разделов. Кстати, если нужно использовать только одно значение, третья строка будет выглядеть так:

$query->set(category__in, 84);

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

Исключение категорий из результатов поиска

Рассмотрим обратную ситуацию. Пару лет назад я публиковал пост с рекомендациями для вебмастеров, торгующих ссылками в GoGetLinks на WordPress сайтах, где рассказывал как исключить платные заметки из RSS, главной страницы, навигации и т.п. С помощью хака ниже вы сможете также убрать лишнюю информацию из результатов поиска.

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

function mysearchexclude($query) {
	if ($query->is_search) {
		$query->set('category__not_in', array(1,84));
	}
	return $query;
}
add_filter('pre_get_posts','mysearchexclude');

Как и в предыдущем случае, вместо 1 и 84 подставляете ID нужных разделов. Если требуется исключить только одну категорию, удаляете конструкцию array как было показано выше. Для отображения в результатах только постов блога без страниц, применяйте решение из первого хака. В принципе, ничего сложного нет. В будущем, возможно, добавлю еще парочку хаков для поиска в эту или другие статьи.

рейтинг Оцените статью:
Ужасная статьяНичего интересногоТак себеНормальноХорошоКлассный постВ закладки!
(голосов - 6, средний балл: 6,83 из 7)
Загрузка...

категория Категории: Хаки и секреты;
теги Теги: , , , , , , .
Заработай на сайте
заработок в GoGetLinks

комментариев 8 к статье “Хаки для поиска по категориям + исключение страниц в результатах”

  • blogrub.ru   08.08.2012

    Сначала подумал что статья про Хакеров :)

  • personNet   13.08.2012

    Хд, я тоже так подумал

  • Artem   27.09.2012

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

  • Tod   28.09.2012

    Artem, возможно, есть и такая опция — надо изучать функцию поиска, я не разбирался в этом.

  • Olunka   25.10.2012

    Спасибо, статья оказалась весьма кстати.
    Есть ли смысл оставлять поиск на вордпресс стандартный или может установить поиск от гугл? хоть копеечка будет падать

  • Tod   26.10.2012

    Olunka, местами поиск от гугла мне больше нравится чем стандартный, поэтому даже не ради копеечки я бы его ставил.

  • Denis   27.09.2014

    Не совсем верно работает исключение нескольких категорий.
    Работает нормально с таким кодом
    $query->set(‘category__not_in’,array(10,11,12));

  • beklem25   11.11.2016

    Интересно есть какие то хаки для интернет магазинов. Стандартный поиск как то слабоватый
    Вот ищу некоторое время уже, так не хочется писать самостоятельно..

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

(предыдущая статья)

Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!

Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:

Последние посты
Полезные заметки
Лучшее в категории
Облако тегов
Скажи свое мнение!

В чем основные плюсы Wordpress?

Посмотреть результаты

Загрузка ... Загрузка ...
Друзья проекта
Последние новости