Создание фильтра категорий в форме поиска в WordPress

Попросили меня сделать на основе движка WordPress смс для риэлтерского агентства в нашем городе. Отказываться я не стал. Основной трудностью стало организовать поиск по сайту так, чтобы пользователи могли искать в определенных категориях, например, только по 3-х комнатным квартирам или только по домам. Тем не менее, оказалось, что в Вордпрессе организовать такой поиск вполне можно.

Поисковая форма

Чтобы построить форму поиска в WordPress понадобится только один тег get_search_form (). Движок имеет заранее созданную форму и отобразит ее в теме, выполнив выше приведенный тег. Если же вы хотите создать форму поиска с собственным форматированием и, возможно, даже с фильтрами, то вам понадобятся файлы searchform.php и search.php. В первом файле принято размещать код самой формы. Второй — контролирует выводы результатов поиска. По сути, search.php — это такой же шаблон, как и page.php или archive.php, только для вывода результатов запросов.

Согласно внутренней иерархии, движок сначала ищет файл searchform.php. Если такого не существует, то выводится стандартная заранее создана форма. Собственно, это означает, что присутствие шаблона для поисковой формы необязательно. Также, обязательно и то, что в случае отсутствия упомянутого шаблона собственную поисковую форму нельзя нигде вписать. Еще как можно! Обычно она выглядит (как пример взят код из стандартной темы WordPress под названием classic):

<pre lang=»php»><li id=»search»> <label for=»s»><?php _e(‘Search:’); ?></label> <form id=»searchform» method=»get» action=»<?php bloginfo(‘home’); ?>»> <div> <input type=»text» name=»s» id=»s» size=»15″ /><br /> <input type=»submit» value=»<?php esc_attr_e(‘Search’); ?>» /> </div> </form> </li></pre>

В той же стандартной теме, например, данная форма вписана в файл sidebar.php. Также часто ее вписывают в header.php или даже footer.php. Итак, определять ее расположения следует только по критерию целесообразности или эстетичности.

Фильтр из категорий

Нам необходимо создать поисковый фильтр, состоящий из категорий блога. Идея такова: пользователь пишет запрос и выбирает категорию в которой нужно выполнить поиск. Конечно, в других категориях, при этом, движок не будет искать.

Самое главное, что нам необходимо, это создать выпадающий список из категорий блога. В этом нам поможет тег wp_dropdown_categories (). Этот тег имеет много параметров с которыми вы можете ознакомиться в Кодексе WordPress. Сразу скажу, вместо формы с одним фильтром мы создадим форму сразу с двумя! Поэтому код нашей формы выглядеть вот так:

<pre lang=»php»><li id=»search»> <label for=»s»><?php _e(‘Search:’); ?></label> <form id=»searchform» method=»get» action=»<?php bloginfo(‘home’); ?>»> <div> <input type=»text» name=»s» id=»s» size=»15″ /><br /> <?php wp_dropdown_categories(‘show_option_all=Все категории&#038;exclude=4,5,6’); ?><br /> <?php wp_dropdown_categories(‘show_option_all=Все категории&#038;exclude=1,2,3’); ?><br /> <input type=»submit» value=»<?php esc_attr_e(‘Search’); ?>» /> </div> </form> </li></pre>

Опция show_option_all = Все категории означает, что пользователь сможет выбрать параметр «Все категории», таким образом осуществив поиск во всех категориях данного выпадающего списка. Далее, опция exclude позволяет нам исключить определенные категории из списка. Как видно из примера, из первого списка мы исключили категории под номером 4, 5 и 6, а из другого — номера 1, 2 и 3. Таким образом, мы сможем осуществить поиск, например, в категории 1 и категории 4 или 5 или 6. Или сразу в трех категориях 1, 2 и 3 и категории 5. И т.д.

Только подумайте, какие перспективы открываются, если вы качественно организуете записи в категории. То есть, правильная продуманная структура позволяет применять WordPress в качестве полноценной CMS! Например, можно создать сайт риэлторской компании и легко сортировать предложения купли продажи недвижимости по различным критериям.

Создание фильтра категорий в форме поиска в WordPress: 2 комментария

  1. весь нет перерыл и только у Вас обнаружил что у WordPress есть такая замечательная функция «wp_dropdown_categories»
    ОГРОМНОЕ СПАСИБО!

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *