通过带有两个元键的meta_value_num获取帖子顺序


Get posts order by meta_value_num with two meta keys

我想通过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设置,并在完成后使用重新排序的帖子数组进行设置