我有房产列表网站。我知道如何按元值对帖子进行排序,但我处于不同的情况,属性有两个价格元字段 -
正常价格
折扣价
我可以按正常价格或折扣价格对帖子进行排序,但我希望WordPress将两个元值都视为一个值,因此,如果两个属性A和B分别具有4000美元和5000美元的正常价格,但B的折扣价格为3500美元,那么B应该在A之前来。
$args = array(
'post_type' => 'listing',
'posts_per_page' => 15,
'paged' => $paged,
'meta_key' => $meta_prefix . 'price',
'orderby' => 'meta_value_num',
'order' => 'ASC'
);
$listings = new WP_Query($args);
第二个元键是$meta_prefix.'discounted_price'
答案 0 :(得分:0)
首先,您需要创建以下函数,这将允许您按两个字段排序:
您可以将其放在文件函数中:
function customorderby($orderby) {
return 'mt1.meta_value, mt2.meta_value ASC';
}
在将过滤器添加到该函数之前的WP_Query之后,当您完成删除时,示例:
add_filter('posts_orderby','customorderby');
$wp_query = new WP_Query(array(
'post_type' => 'listing',
'posts_per_page' => 15,
'paged' => $paged,
'meta_key' => $meta_prefix . 'price',
'meta_query' => array(
array(
'key' => $meta_prefix . 'price',
),
array(
'key' => $meta_prefix.'discounted_price',
)
)
));
remove_filter('posts_orderby','customorderby');