主查询wordpress中的元查询

时间:2018-08-07 17:03:42

标签: php wordpress

嗨,大家好,我试图超载wordpress的主要查询,但总是使所有帖子都无法过滤,我在 functions.php

中有此内容
add_action( 'pre_get_posts', 'archive_custom_query_vars' );
function archive_custom_query_vars( $query ) {
    if ( !is_admin() && $query->is_main_query()) {
       if(isset($query->query['post_type']) && $query->query['post_type'] == 'property' && !isset($query->query['page'])){
         get_post_type_property($query);
       }
    }
         return $query;
}

我用来拨打电话的文件是 archive-property.php ,因此post_type是属性,这是我的功能:

function get_post_type_property(&$query){
  $filter_args = array(
     'tax_query'=>array(),
     'meta_query'=>array()
  );

 if(isset($_GET['f_price_range'])){
    $range = explode(',', trim($_GET['f_price_range']));
    if($range[0] != $range[1]){ //the bar range moved
        $filter_args['meta_query'] = array(
            array(
                'key'     => 'c_price',
                'value'   => array( $range[0], $range[1] ),
                'compare' => 'BETWEEN',
                'type'    => 'NUMERIC',
            )
        );
    }
}

我也已经尝试过:

if(isset($_GET['f_price_range'])){
    $range = explode(',', trim($_GET['f_price_range']));
    if($range[0] != $range[1]){ //the bar range moved
        $filter_args['meta_query'] = array(
            'AND',
            array(
                'key' => 'c_price',
                'value' => $range[1],
                'type' => 'numeric',
                'compare' => '<='
            ),
            array(
                'key' => 'c_price',
                'value' => $range[0],
                'type' => 'numeric',
                'compare' => '>='
            )
        );
    }
}

“ f_price_range” 是我在请求中从网址获得的值,即两个数字之间用逗号分隔,谢谢您的帮助。

0 个答案:

没有答案