我有房产列表网站。我知道如何按元值对帖子进行排序,但我的情况不同,属性有两个价格元字段-
-
正常价格
-
折扣价
我可以按正常价格或折扣价格对帖子进行排序,但我希望 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'
首先,您需要创建以下函数,这将允许您按两个字段进行排序:
你可以把它放在文件函数中:
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');