嗨,大家好,我试图超载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” 是我在请求中从网址获得的值,即两个数字之间用逗号分隔,谢谢您的帮助。