WP_QUERY排序-最后一个特定的META_KEY值,然后按创建日期排序

时间:2017-04-18 作者:HHGK

我有一个自定义的帖子类型“产品”,我需要显示一个列表。产品按元价值分类为不同的产品类型。我需要在列表底部设置一个特定的产品类型“tools”。但它也必须按创建日期排序。因此,所有其他产品类型按创建日期排序,然后是产品类型“工具”-也按创建日期排序。在一个wp\\U查询中是否可以执行此操作?

wp\\u查询的参数如何?

2 个回复
SO网友:LUIS

如果您使用的是Wordpress 4.2或更新版本,则可以执行以下操作:

$args = array( 
    \'post_type\'       => \'products\',
    \'posts_per_page\'  => 10,
    \'meta_query\'      => array(
        \'relation\'    => \'AND\',
        \'tools_clause\' => array(
            \'key\'     => \'tools\',
            \'compare\' => \'EXISTS\',
        ),
        \'create_date_clause\' => array(
            \'key\'     => \'create_date\',
            \'compare\' => \'EXISTS\',
        ),
    ),
    \'order_by\' => array(
        \'create_date_clause\' => \'ASC\',
        \'tools_clause\' => \'ASC\',
    )
);
请看这里:Query improvements in WP 4.2: ‘orderby’ and ‘meta_query’

SO网友:HHGK

看起来不错。在我的情况下,应该是这样的:

$args = array( 
\'post_type\'       => \'products\',
\'posts_per_page\'  => 10,
\'meta_query\'      => array(
    \'tools_clause\' => array(
        \'key\'     => \'producttype\',
        \'value\'     => \'tools\',
        \'compare\' => \'EXISTS\',
    ),
),
\'order_by\' => array(
    \'date\' => \'ASC\',
    \'tools_clause\' => \'ASC\',
));
但有了这一点,我只能得到带有producttype“tools”的产品。但我需要先获得所有其他产品类型,然后是“工具”。

相关推荐

Get_Terms()Order by Term_Meta

我正在做一个get_terms() 我试图按自定义术语元排序的查询。自定义术语元键是\'order\' 它是一个数值(介于1和10之间)。我尝试了以下方法,但顺序似乎没有遵循元值-任何指针都是值得赞赏的。$type_terms = get_terms( \'type\', array( \'hide_empty\' => false, array( \'key\' => \'order\', ), \'or