Почему мой WP Meta Query не возвращает никаких результатов?

Нельзя ли принять значение из $ _GET в качестве ключа в мета-запросе WP? Я не уверен, почему этот код не возвращает никаких результатов …

Оба вопроса о цене, а также о спальнях не возвращают никаких результатов. Является ли код неправильным? Любая помощь будет высоко ценится..

<?php if ( get_query_var('paged') ) { $paged = get_query_var('paged'); } else if ( get_query_var('page') ) { $paged = get_query_var('page'); } else { $paged = 1; } $args = array( 'post_type' => 'property', 'paged' => $paged ); if($_GET['beds'] >= 1) { $args['meta_query'][] = array( 'key' => $_GET['beds'], 'value' => array('pyre_BHK-A','pyre_BHK-B','pyre_BHK-C','pyre_BHK-D','pyre_BHK-E'), 'compare' => 'IN' ); } if(($_GET['price-max'] >= 1)&&($_GET['price-min'] >= 1)) { $args['meta_query'][] = array( 'relation' => 'OR', array( 'key' => 'pyre_price', 'value' => array($_GET['price-min'],$_GET['price-max']), 'compare' => 'BETWEEN', 'type' => 'numeric' ), array( 'key' => 'pyre_pricem', 'value' => array($_GET['price-min'],$_GET['price-max']), 'compare' => 'BETWEEN', 'type' => 'numeric' ) ); } query_posts($args); if(have_posts()): ?> <?php while(have_posts()): the_post(); ?> <?php get_template_part( 'property-listing' ); // Navigation bar (property-listing.php) ?> <?php endwhile; ?> <?php else: ?> <h3><?php echo of_get_option('search_results_none_title', 'No properties were found which match your search criteria.'); ?></h3> <p><?php echo of_get_option('search_results_none_content', 'Try broadening your search to find more results.'); ?></p> <?php endif; ?> 

Solutions Collecting From Web of "Почему мой WP Meta Query не возвращает никаких результатов?"

У вас есть некоторые ошибки в том, как meta_query массив meta_query для price-max и price-min .

Также в вашем коде будет проблема, если нет $_GET['beds'] , но $_GET['price-min'] и $_GET['price-max'] . это потому, что массив $args['meta_query'] задан внутри if($_GET['beds'] >= 1) .

Кроме того, ваш код выдаст много уведомлений, если GET не будет изменен, вы должны проверить, установлены ли переменные $_GET перед использованием и, кроме того, вы должны обеспечить их числовые значения, если вы хотите использовать их как числовые.

Наконец, query_posts всегда следует избегать, вместо этого используйте WP_Query .

Этот код должен работать, но не проверен :

 <?php if ( ! is_front_page() ) { $paged = get_query_var('paged') ? : 1; } else { $paged = get_query_var('page') ? : 1; } $beds = isset($_GET['beds']) && intval($_GET['beds']) ? $_GET['beds'] : 0; $max = isset($_GET['price-max']) && intval($_GET['price-max']) ? $_GET['price-max'] : 0; $min = isset($_GET['price-min']) && intval($_GET['price-min']) ? $_GET['price-min'] : 0; $args = array( 'post_type' => 'property', 'paged' => $paged ); if( $beds >= 1) { $args['meta_query'][] = array( 'key' => $beds, // are you sure for that? 'value' => array('pyre_BHK-A','pyre_BHK-B','pyre_BHK-C','pyre_BHK-D','pyre_BHK-E'), 'compare' => 'IN' ); } if( ($max >= 1) && ($min) ) { if ( ! isset($args['meta_query']) ) $args['meta_query'] = array(); $args['meta_query']['relation'] = 'OR'; $args['meta_query'][] = array( 'key' => 'pyre_price', 'value' => array($min, $max), 'compare' => 'BETWEEN', 'type' => 'numeric' ); $args['meta_query'][] = array( 'key' => 'pyre_pricem', 'value' => array($min, $max), 'compare' => 'BETWEEN', 'type' => 'numeric' ); } $query = new WP_Query($args); if( $query->have_posts() ) : while( $query->have_posts() ): $query->the_post(); get_template_part( 'property-listing' ); // Navigation bar (property-listing.php) endwhile; else: ?> <h3><?php echo of_get_option('search_results_none_title', 'No properties were found which match your search criteria.'); ?></h3> <p><?php echo of_get_option('search_results_none_content', 'Try broadening your search to find more results.'); ?></p> <?php wp_reset_postdata(); endif; ?>