这里是我的元查询,以按照DESC顺序按价格排列的property_type和卧室过滤属性。如何通过自定义帖子类型按两个自定义字段排序
$properties = array(
'post_type' => 'soto_property',
'paged'=>$paged,
'posts_per_page' => 6,
'orderby' => 'meta_value_num',
'meta_key' => 'price',
);
/*check Price range */
if (!empty($_GET['price_range'])) {
$lowestPrice=get_post_meta($_GET['price_range'],"lowest_price",true);
$maximumPrice=get_post_meta($_GET['price_range'],"maximum_price",true);
$properties['meta_query'][] = array(
'key' => 'price',
'value' => array($lowestPrice, $maximumPrice),
'type' => 'numeric',
'compare' => 'BETWEEN',
);
}
else
{
$properties['meta_query'][] = array(
'key' => 'price',
'compare' => 'EXISTS'
);
}
/*check bedrooms range */
if (!empty($_GET['bedrooms'])) {
$beds_value=get_post_meta($_GET['bedrooms'],"beds_value",true);
if($beds_value)
{
$properties['meta_query'][] = array(
'key' => 'dorm_room',
'value' => $beds_value,
'type' => 'numeric',
'compare' => '>='
);
}
}
function orderbyreplace($orderby) {
global $wpdb;
return ('mt1.meta_value DESC, mt2.meta_value ASC');
}
add_filter('posts_orderby','orderbyreplace');
query_posts($properties);
remove_filter('posts_orderby','orderbyreplace');
它工作正常,但现在我想订房子也卧室。
例如,如果卧室值被选择为“2”,则其具有卧室过滤所有属性值大于2。
我想订购像卧室第一所有属性的属性值2在价格顺序过滤(DESC )然后所有属性 卧室值3按价格顺序过滤(DESC),然后类似卧室值为4,5和6.
如何做到这一点?
您可以使用“pre_get_posts”过滤器中的functions.php –
请你能告诉我如何在functions.php中使用'pre_get_posts'滤波器的阶数呢? –