Проблема с фильтром по произвольным полям (чекбоксам)!
У меня сайт на ВП.
Создал постайп apartments в нем добавляю квартиры. Задача: сделать фильтр поиска по цене (от, до), по типу квартиры (радионкнопки) и самое главное - удобства (чекбоксы).
Сделал произвольное поле через админку, дал название полю comfort и перечислил необходимые значения.
Вот код формы в шаблоне:
<form class="filter" action="/search" method="GET" role="form"><!-- action пустой, чтобы ссылалось на текущую страницу --> <label>Цена от: <input type="number" name="min-price"> </label> <label>до: <input type="number" name="max-price"> </label> <label> <input type="checkbox" name="type[]" value="Студио"> <span>Студио</span> </label> <label> <input type="checkbox" name="type[]" value="Одна спальня"> <span>Одна спальня</span> </label> <label> <input type="checkbox" name="type[]" value="Две спальни"> <span>Две спальни</span> </label> <label> <input type="checkbox" name="type[]" value="Три спальни"> <span>Три спальни</span> </label> <?php $args = array( 'post_type' => 'apartments' ); $query = new WP_Query( $args ); if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); $arr_comfort = get_post_meta( $post->ID, 'comfort');?> <?php foreach ($arr_comfort as $comfort) { foreach ($comfort as $comfort_k => $comfort_v) {; ?> <label> <input type="checkbox" name="comfort[]" value="<?php echo $comfort_v; ?>"> <span><?php echo $comfort_v; ?></span> </label> <?php } } endwhile; else : wp_reset_postdata(); endif;?> <!-- <label>--> <!-- <input type="text" name="person">--> <!-- Person--> <!-- </label>--> <a href="#" target="_blank"><button type="submit">Отфильтровать</button></a> </form>
Вот скрипт обработки:
$args = array( 'post_type' => 'apartments', // 'paged' => get_query_var('paged'), ); $args['meta_query'] = array( 'relation'=>'AND' ); if (isset($_GET['min-price']) || isset($_GET['max-price'])) { if ($_GET['min-price'] == '') $_GET['min-price'] = 0; if ($_GET['max-price'] == '') $_GET['max-price'] = 9999999; $args['meta_query'][] = array( 'key' => 'sale_price', 'value' => array($_GET['min-price'], $_GET['max-price']), 'type' => 'numeric', 'compare' => 'BETWEEN' ); } if (!empty($_GET['type'])) { $args['meta_query'][] = array( 'key' => 'type', 'value' => $_GET['type'], 'compare' => 'IN' ); } if (!empty($_GET['comfort'])) { $args['meta_query'][] = array( 'key' => 'comfort', 'value' => $_GET['comfort'], 'compare' => 'IN' ); } $query = new WP_Query( $args );
Все работает, кроме чекбоксов, уже все голову себе сломал. На странице поиска, после отправки запроса в мета полях находятся все отмеченные чекбоксы, но фильтрация не происходит, показывает пустую страницу... Буду рад помощи.