Поиск и фильтр 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
    Как купить билеты на поезд

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

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

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

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

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

    Бесплатная раскрутка сайтов ucoz
    Необходимо для себя выяснить, какая цель преследуется при раскрутке Интернет проекта. Здесь всё просто, так как чаще всего это возможность при помощи различных способов и средств увеличить поток посетителей.

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

    Где купить качественные ссылки
    Большинство информации предлагаемой для изучения информации по продвижению ресурсов, непременно во главу угла ставят использование в интернет ресурсах качественного, уникального контента. Также для продвижения

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

    Поступления в университет
    Перед всеми выпускниками школ и их родителями сейчас стоит задача – выбор предметов единого государственного экзамена (ЕГЭ). От того, какие ЕГЭ будут выбраны, зависит, поступит ребенок в ВУЗ или нет.

rss