按元值排序,但包含没有一个的帖子
我一直在使用pre_get_posts过滤器修改内置的WP搜索,使用户可以按不同字段对帖子(包括一堆自定义帖子类型)进行排序。 我遇到的问题是,当我告诉WP按元值排序时,它将排除所有未设置该元值的帖子。如果将排序方式从“价格”更改为“日期”,这将导致结果数量发生变化,因为“帖子”没有设置“价格”,而“项目”却设置了。 这不是我想要的,所以我想知道是否有一种方法可以包含所有帖子-即使那些缺少我正在排序的元值的帖子-并将没有该值的帖子放在最后。 我知道如何在多个字段上进行排序,但这无济于事。 谢谢 似乎我不是唯一一个提出此问题的人:如何在wp_query的args中包含带有&不带有某些meta_key的帖子?但那里没有解决方案。 更新资料 我已经尝试了答案,但是不确定我是否理解正确,这是我现在所拥有的: <?php function my_stuff ($qry) { $qry->set('meta_query', array(array( 'key' => 'item_price', 'value' => '', 'compare' => 'NOT EXISTS' ))); $qry->set('orderby', 'meta_value date'); # Sorting works with meta_value as well as meta_value_num - I've tried both $qry->set('order', 'ASC DESC'); $qry->set('meta_key', 'item_price'); } 元值是一个数字(顾名思义,它用于存储价格) 更新2 …