Проблема с фильтром по произвольным полям (чекбоксам)!
У меня сайт на ВП.
Создал постайп 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 );
Все работает, кроме чекбоксов, уже все голову себе сломал. На странице поиска, после отправки запроса в мета полях находятся все отмеченные чекбоксы, но фильтрация не происходит, показывает пустую страницу... Буду рад помощи.