@Httdientee

Проблема с WP_Query, как решить?

По какой-то причине '_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);
}

?>
  • Вопрос задан
  • 59 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы