多个orderby值的问题

时间:2018-03-15 作者:Loyens

我使用的是:

\'orderby\' => array(
    \'meta_value_num\' => \'ASC\', 
    \'menu_order\' => \'ASC\'
), 
\'meta_query\' => array(
    \'relation\' => \'AND\',
    array(
        \'key\' => \'newprice\',
        \'type\' => \'decimal\',
    ),
    array(
        \'key\' => \'datum\',
        \'compare\' => \'>=\',
        \'value\' => strtotime(\'-1days\'),
    ),
),
这很好,但这排除了任何不包含“newprice”元值的帖子。

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

在元查询中,还需要显式查询未设置该元键的帖子。通过嵌套元查询可以做到这一点,如下所示:

\'orderby\'    => array(
    \'meta_value_num\' => \'ASC\', 
    \'menu_order\'     => \'ASC\'
), 
\'meta_query\' => array(
    \'relation\' => \'AND\',
    array(
        \'relation\' => \'OR\',
        array(
            \'key\'  => \'newprice\',
            \'type\' => \'decimal\',
        ),
        array(
            \'key\'     => \'newprice\',
            \'value\'   => \'\',
            \'compare\' => \'NOT EXISTS\',
        ),
    ),
    array(
        \'key\'     => \'datum\',
        \'compare\' => \'>=\',
        \'value\'   => strtotime(\'-1days\'),
    ),
),
另请注意,您需要设置\'meta_key\' 在查询时orderby \'meta_value_num\' 它按正确的元键排序

实际上,如果你有meta_query, 排除它将为您节省一个加入。

结束

相关推荐

Wordpress query reverse order

$args = array(\'post_type\' => \'etlap\', \'posts_per_page\' => 5, \'post__in\' => $ids, \'post_status\' => \'any\', \'orderby\' => \'post__in\'); 我想使orderby状态颠倒。怎么可能呢?对不起,如果我问了一个愚蠢的问题,但我找不到任何关于这个问题的纪录片。