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>
и не работает, ни на одном шаблоне с циклом, в чем проблема?( остался последний штрих.
Fatal error: Uncaught Error: Call to undefined function ads_get_box() in /var/www/www-root/data/www/codeseller.ru/wp-content/themes/codeseller/includes/adv.php:15 Stack trace: #0 /var/www/www-root/data/www/codeseller.ru/wp-includes/class-wp-hook.php(310): add_adv_content_after_first_forum_post('pfm-single-post...', '/var/www/www-ro...') #1 /var/www/www-root/data/www/codeseller.ru/wp-includes/class-wp-hook.php(334): WP_Hook->apply_filters('', Array) #2 /var/www/www-root/data/www/codeseller.ru/wp-includes/plugin.php(517): WP_Hook->do_action(Array) #3 /var/www/www-root/data/www/codeseller.ru/wp-content/plugins/wp-recall/functions/files.php(57): do_action('rcl_include_tem...', 'pfm-single-post...', '/var/www/www-ro...') #4 /var/www/www-root/data/www/codeseller.ru/wp-content/plugins/wp-recall/add-on/prime-forum/functions-templates.php(117): rcl_include_template('pfm-single-post...', '/var/www/www-ro...') #5 /var/www/www-root/data/www/codeseller.ru/wp-content/plugins/wp-recall/add-on/prime-forum/themes/prime-first/templates/pfm in /var/www/www-root/data/www/codeseller.ru/wp-content/themes/codeseller/includes/adv.php on line 15