По какой-то причине '_listing_bedrooms', '_listing_bedrooms' - эти два метатега ломают весь поиск, не знаю почему, но если искать их с помощью between, то я получаю posts empty.
Если убрать эти два параметра с поиска, все работает (то есть цену ищет нормально), при этом эти мета теги есть в базе, миллион раз проверил, если искать через LIKE, в принципе работает, но это не то что мне нужно.
PRINT_R ($meta_query)
Array
(
[0] => Array
(
[relation] => AND
[0] => Array
(
[key] => _listing_price
[value] => Array
(
[0] => 0
[1] => 1656081799
)
[compare] => BETWEEN
)
)
[1] => Array
(
[relation] => AND
[0] => Array
(
[key] => _listing_bedrooms
[value] => Array
(
[0] => 0
[1] => 1656081799
)
[compare] => BETWEEN
)
)
[2] => Array
(
[relation] => AND
[0] => Array
(
[key] => _listing_bathrooms
[value] => Array
(
[0] => 0
[1] => 1656081799
)
[compare] => BETWEEN
)
)
)
<?php
$meta_query = array();
if ( isset( $_GET ) ) {
$mt_rand = '' . time();
$order_by = $_GET['es_search']['redirect_view_sort'];
$price_min = ( empty( $_GET['es_search']['price']['min'] ) ) ? ( '0' ) : ( $_GET['es_search']['price']['min'] );
$price_max = ( empty( $_GET['es_search']['price']['max'] ) ) ? ( $mt_rand ) : ( $_GET['es_search']['price']['max'] );
$bedrooms_min = ( empty( $_GET['es_search']['bedrooms']['min'] ) ) ? ( '0' ) : ( $_GET['es_search']['bedrooms']['min'] );
$bedrooms_max = ( empty( $_GET['es_search']['bedrooms']['max'] ) ) ? ( $mt_rand ) : ( $_GET['es_search']['bedrooms']['max'] );
$bathrooms_min = ( empty( $_GET['es_search']['bathrooms']['min'] ) ) ? ( '0' ) : ( $_GET['es_search']['bathrooms']['min'] );
$bathrooms_max = ( empty( $_GET['es_search']['bathrooms']['max'] ) ) ? ( $mt_rand ) : ( $_GET['es_search']['bathrooms']['max'] );
$meta_query[] = array(
'relation' => 'AND',
array(
'key' => '_listing_price',
'value' => array( $price_min, $price_max ),
'compare' => 'BETWEEN',
),
);
$meta_query[] = array(
'relation' => 'AND',
array(
'key' => '_listing_bedrooms',
'value' => array( $bedrooms_min, $bedrooms_max ),
'compare' => 'BETWEEN',
),
);
$meta_query[] = array(
'relation' => 'AND',
array(
'key' => '_listing_bathrooms',
'value' => array( $bathrooms_min, $bathrooms_max ),
'compare' => 'BETWEEN',
),
);
}
$query = new WP_Query(
array(
'post_type' => 'listing',
'posts_per_page' => -1,
'orderby' => 'post_date',
'order' => 'DESC',
'post_status' => 'publish',
'meta_query' => array(
'relation' => 'AND',
$meta_query
),
)
);
foreach ( $query->posts as $post ) {
var_dump($post);
}
?>