Поиск и фильтр WordPress записей по произвольным полям

Опубликовано: 17.04.2018

видео Поиск и фильтр WordPress записей по произвольным полям

custom post types без плагинов для Wordpress

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



Услуга: Разработаем фильтр для Вашего сайта

Разработаем фильтр и поиск по произвольным полям специально для Вашего сайта. Оформим форму в соответствии с дизайном сайта. Сверстаем страницу с результатами поиска.

от 4 900 рублей

Узнать точную стоимость

Принцип поиска и фильтра записей в WordPress

Дан был сайт, где товары (в данном случае мотоциклы) добавлялись в виде стандартных WordPress записей c произвольными полями. Для работы с произвольными полями был установлен плагин Types . Произвольные поля отвечали за дополнительные параметры товара, по которым в дальнейшем подразумевался фильтр и поиск.


Сustom fields - создаем поиск по произвольным полям

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

Форма поиска и фильтра WordPress товаров

Далее была доработана HTML форма поиска и фильтра WordPress записей. А именно, был создан файл  moto_filtr_form.php и наполнен следующим кодом:


Date range filter фильтр записей и страниц в админ-панели

<form name="search" role="search" action="/" method="get"> <ul> <li><label>Цена</label><div class="input"><input placeholder="От:" class="price_input" type="text" name="price1" value="" /> <input placeholder="До:" class="price_input" type="text" name="price2" value="" /></div></li> <li><label>Модель</label><div class="input"><input type="text" name="s" value="" /></div></li> <li><label>Марка</label><div class="input"><select name="mark"> <option selected value="">Все марки</option> <?php $categories = get_categories(); if ($categories) { foreach ($categories as $category) { $option = '<option value="'.$category->category_nicename.'">'; $option .= $category->cat_name; $option .= ' ('.$category->category_count.')'; $option .= '</option>'; echo $option; } } ?> </select></div> </li> <li><label>Тип</label><div class="input"><select name="type_moto"> <option selected value="">Все</option> <?php $type_moto_key = 'wpcf-type_moto'; $type_moto_counties = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = %s ORDER BY meta_value ASC", $type_moto_key) ); if ($type_moto_counties) { foreach ($type_moto_counties as $type_moto) { echo "<option value=\"" . $type_moto . "\">" . $type_moto . "</option>"; } } ?> </select></div> </li> <li><label>Год выпуска</label><div class="input"> <select class="price_input" name="year_moto_ot"> <option selected value="">От:</option> <OPTION value="2012" >2012</OPTION> <OPTION value="2011" >2011</OPTION> <OPTION value="2010" >2010</OPTION> <OPTION value="2009" >2009</OPTION> <OPTION value="2008" >2008</OPTION> <OPTION value="2007" >2007</OPTION> <OPTION value="2006" >2006</OPTION> <OPTION value="2005" >2005</OPTION> <OPTION value="2004" >2004</OPTION> <OPTION value="2003" >2003</OPTION> <OPTION value="2002" >2002</OPTION> <OPTION value="2001" >2001</OPTION> <OPTION value="2000" >2000</OPTION> <OPTION value="1999" >1999</OPTION> <OPTION value="1998" >1998</OPTION> <OPTION value="1997" >1997</OPTION> <OPTION value="1996" >1996</OPTION> <OPTION value="1995" >1995</OPTION> <OPTION value="1994" >1994</OPTION> <OPTION value="1993" >1993</OPTION> <OPTION value="1992" >1992</OPTION> <OPTION value="1991" >1991</OPTION> <OPTION value="1990" >1990</OPTION> <OPTION value="1989" >1989</OPTION> <OPTION value="1988" >1988</OPTION> <OPTION value="1987" >1987</OPTION> <OPTION value="1986" >1986</OPTION> <OPTION value="1985" >1985</OPTION> <OPTION value="1984" >1984</OPTION> <OPTION value="1983" >1983</OPTION> <OPTION value="1982" >1982</OPTION> <OPTION value="1981" >1981</OPTION> <OPTION value="1980" >1980</OPTION> <OPTION value="1979" >1979</OPTION> <OPTION value="1978" >1978</OPTION> <OPTION value="1977" >1977</OPTION> <OPTION value="1976" >1976</OPTION> <OPTION value="1975" >1975</OPTION> <OPTION value="1974" >1974</OPTION> <OPTION value="1973" >1973</OPTION> <OPTION value="1972" >1972</OPTION> <OPTION value="1971" >1971</OPTION> <OPTION value="1970" >1970</OPTION> </select> <select class="price_input" name="year_moto_do"> <option selected value="">До:</option> <OPTION value="2012" >2012</OPTION> <OPTION value="2011" >2011</OPTION> <OPTION value="2010" >2010</OPTION> <OPTION value="2009" >2009</OPTION> <OPTION value="2008" >2008</OPTION> <OPTION value="2007" >2007</OPTION> <OPTION value="2006" >2006</OPTION> <OPTION value="2005" >2005</OPTION> <OPTION value="2004" >2004</OPTION> <OPTION value="2003" >2003</OPTION> <OPTION value="2002" >2002</OPTION> <OPTION value="2001" >2001</OPTION> <OPTION value="2000" >2000</OPTION> <OPTION value="1999" >1999</OPTION> <OPTION value="1998" >1998</OPTION> <OPTION value="1997" >1997</OPTION> <OPTION value="1996" >1996</OPTION> <OPTION value="1995" >1995</OPTION> <OPTION value="1994" >1994</OPTION> <OPTION value="1993" >1993</OPTION> <OPTION value="1992" >1992</OPTION> <OPTION value="1991" >1991</OPTION> <OPTION value="1990" >1990</OPTION> <OPTION value="1989" >1989</OPTION> <OPTION value="1988" >1988</OPTION> <OPTION value="1987" >1987</OPTION> <OPTION value="1986" >1986</OPTION> <OPTION value="1985" >1985</OPTION> <OPTION value="1984" >1984</OPTION> <OPTION value="1983" >1983</OPTION> <OPTION value="1982" >1982</OPTION> <OPTION value="1981" >1981</OPTION> <OPTION value="1980" >1980</OPTION> <OPTION value="1979" >1979</OPTION> <OPTION value="1978" >1978</OPTION> <OPTION value="1977" >1977</OPTION> <OPTION value="1976" >1976</OPTION> <OPTION value="1975" >1975</OPTION> <OPTION value="1974" >1974</OPTION> <OPTION value="1973" >1973</OPTION> <OPTION value="1972" >1972</OPTION> <OPTION value="1971" >1971</OPTION> <OPTION value="1970" >1970</OPTION> </select> </div></li> <li><label>Пробег</label><div class="input"><select name="km_moto"> <option selected value="">До:</option> <option value="5000">5000 км</option> <option value="10000">10000 км</option> <option value="15000">15000 км</option> <option value="20000">20000 км</option> <option value="25000">25000 км</option> <option value="30000">30000 км</option> <option value="50000">50000 км</option> <option value="75000">75000 км</option> <option value="100000">100000 км</option> <option value="150000">150000 км</option> </select></div> </li> <li><label>Объем</label><div class="input"><select class="price_input" name="v_moto_ot"> <option selected value="">От:</option> <option value="50">50</option> <option value="80">80</option> <option value="150">150</option> <option value="250">250</option> <option value="500">500</option> <option value="600">600</option> <option value="750">750</option> <option value="1000">1000</option> <option value="1250">1250</option> <option value="1500">1500</option> </select> <select class="price_input" name="v_moto_do"> <option selected value="">До:</option> <option value="50">50</option> <option value="80">80</option> <option value="150">150</option> <option value="250">250</option> <option value="500">500</option> <option value="600">600</option> <option value="750">750</option> <option value="1000">1000</option> <option value="1250">1250</option> <option value="1500">1500</option> </select></div> </li> <li style="text-align: right; margin: 15px 0;"><input class="red button" type="submit" value="Найти" /></li> </ul> </form>

Эта форма вызывалась в сайдбаре (sidebar.php) с помощью php кода:

3D стерео фильмы для 5D
    Как купить билеты на поезд

    Я всегда в последнее время пользуюсь услугами настоящего интернет сайта. Он у меня внушает доверие. И здесь придбати квитки возможно в любое

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

    Custom plugins and WordPress themes
    Шаблоны страниц в WordPress являются отличным способом изменить структуру страниц или добавить им функциональности. Создание собственного шаблона страниц может быть не простым делом, особенно для новичков,

    Продукт WooCommerce
    Каждый умный человек в современном мире прекрасно понимает, что в двадцать первом веке просто нельзя упускать возможность узнать или же научиться чему-либо новому. Особенно, если речь касается электронной

    Магазин видеонаблюдения
    При создании системы видеонаблюдения необходим целый ряд определенного оборудования. Для этого сегодня существует огромное количество различных магазинов по продаже специальной техники для организации

    Заказ такси в Киеве от 30 грн
    Если неудачи в жизни для вас нормой, в первую очередь необходимо проанализировать, откуда растут корни ваших проблем. Скорее всего, вы человек неорганизованный и постоянно опаздываете. В мегаполисе это

    Тайверб Тайверб
    Прочие ингредиенты: целлюлоза микрокристаллическая, повидон К30, натрия крахмалгликолят, магния стеарат, opadry желтый YS-1-12524-A. Лапатиниб содержится в форме лапатиниба дитосилата моногидрата. № UA/8847/01/01

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

    Копаксон
    Конкурентно замещает антигены миелина в местах связывания с молекулами главного комплекса гистосовместимости класса II на поверхности клеток, несущих антигены. Следствием этого является активация образования

    Begin.com.ua/
    Подбором персонала занимается HR-менеджер, но часто такая должность отсутствует в компании, и его обязанности берут на себя или директор, или его заместитель. Если выбор сотрудников окажется неправильным 

rss