4ответ(ов) в теме
Нужен был простой элементарный фильтр для отсева постов исключительно по цене, сделал функцию в теме:
function go_filter() { // наша функция $args = array(); // подготовим массив $args['meta_query'] = array('relation' => 'AND'); // отношение между условиями, у нас это "И то И это", можно ИЛИ(OR) global $wp_query; // нужно заглобалить текущую выборку постов if ($_GET['price_ot'] != '' || $_GET['price_do'] != '') { // если передано поле "Цена от" или "Цена до" if ($_GET['price_ot'] == '') $_GET['price_ot'] = 0; // если "Цена от" пустое, то значит от 0 и выше if ($_GET['price_do'] == '') $_GET['price_do'] = 9999999; // если "Цена до" пустое, то будет до 9999999 $args['meta_query'][] = array( // пешем условия в meta_query 'key' => 'price-products', // название произвольного поля 'value' => array( (int)$_GET['price_ot'], (int)$_GET['price_do'] ), // переданные значения ОТ и ДО для интервала передаются в массиве 'type' => 'numeric', // тип поля - число 'compare' => 'BETWEEN' // тип сравнения, здесь это BETWEEN - т.е. между "Цены от" и до "Цены до" ); } query_posts(array_merge($args,$wp_query->query)); // сшиваем текущие условия выборки стандартного цикла wp с новым массивом переданным из формы и фильтруем }
добавил перед циклом на странице поиска:
<?php if ($_GET && !empty($_GET)) { // если было передано что-то из формы go_filter(); // запускаем функцию фильтрации } ?>
Код формы:
<form class="filter" action="" method="get"><!-- action пустой, чтобы ссылалось на текущую страницу --> <label>Цена от: <!-- Интервал значений цены --> <input type="number" name="price_ot"/> </label> <label>до: <input type="number" name="price_do"/> </label> <button type="submit">Отфильтровать</button> </form>
и не работает, ни на одном шаблоне с циклом, в чем проблема?( остался последний штрих.
Тема закрыта. Публикация новых сообщений запрещена.