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

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

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

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

    Видеонаблюдение Novicam в Екатеринбурге
    По своей сути подключение видеорегистратора к локальной сети совершенно не отличается от подключения обычного компьютера к локальной сети.  Для того что бы система видеонаблюдения начала функционировать

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

    Комплект инсталляции Grohe 6в1
    Вместо обычного унитаза многие люди предпочитают, чтобы было сочетание инсталлированной конструкции унитаза с определенным видом отделки. Особенно такая инсталляция включают в себя раму, которая покрыта

    Авіаквитки купити
    В наше время все больше людей путешествуют с помощью самолета. Ведь авиаперевозки пассажирские стали намного доступнее. И приобрести билеты становится с каждым днём все легче и легче. К примеру, на данном

    Повербанк оптом
    В данной группе представлены переносные зарядные устройства Power Banks. Power Banks - Повер банк, Пауер банк, Павер банк, как только не переводят на русский язык. Единого мнения на счет перевода не будет.

    Cbd vape pen buy online
    Представители просвещенной части прогрессивного человечества сегодня являются активными приверженцами здорового образа жизни и предпочитают лечится только с помощью средств натурального происхождения.

    Зарплата ру
    Еженедельный журнал работа и зарплата вакансии в Москве выходит крупным тиражом в 100 тыс. экземпляров, имеет большую аудиторию читателей, среди которых люди с различным образованием, доходом и социальным

rss