我想通过get_post
通过meta_value_num和meta-keys获得帖子,我尝试了这个代码:
get_posts(
array( 'post_type' => 'posts',
'order' => 'ASC',
'orderby' => 'meta_value_num',
'meta_query' => array(
array('key' => 'class'),
array('key' => 'chair')
)
)
);
我想把这篇文章先按班级号,然后按主席号排序。但是htis代码不起作用,这怎么可能呢?
尽管新的orderby
参数在WP_Query
中很好,但它不支持多个meta_key
的多个orderby
。
我经历了几个场景,甚至深入研究了trac和make,并提出了以下
-
make.wordpress.org wordpress 4.0 中更强大的orderby
-
trac票证#17065
关于这个问题的任何问题都没有得到答复。从这两个链接来看,似乎还有一个问题是由meta_key
和另一个字段排序的,例如发布日期。我还没有试过这个。
我真的认为,在不创建两个查询的情况下,您有两个选择。
-
使用
posts_orderby
过滤器破解,如@s_ha_dum在这里的回答中所述 -
通过使用CCD_ 8。这里的想法是按照一个
meta_key
对查询进行排序,然后在循环开始之前,采用返回的posts数组($posts)并按照第二个meta_key
对它们进行排序。您可以使用the_posts
过滤器(只需记住在完成后删除过滤器),也可以简单地取消模板中的$posts
设置,并在完成后使用重新排序的帖子数组进行设置