WP_按日期和元值查询订单结果

时间:2014-07-16 作者:Alevalentini

我已经搜索过了,但没有找到问题的答案。我有一个用于订购的元键帖子。我想按此值订购post。如果它们有相同的值,我希望它们按日期排序。

我猜这就是要使用的查询:

new WP_Query( array(
    \'post_type\' => array (\'post\', \'aggregato\'),
        \'cat\' => \'-1\',
        \'posts_per_page\' => 12,
        \'orderby\' => \'meta_value_num date\',
        \'order\' => DESC, 
        \'meta_key\' => \'mb_home\',
        \'meta_query\' => array(
                                array(
                                        \'key\' => \'mb_home\',
                                        \'value\' => 0,
                                        \'compare\' => \'!=\',
                                )
                        ) 
        ));
(the\'cat\' => \'-1\' 只是排除特定类别的另一项检查)

现在,此查询返回“mb\\u home”值不同于0的帖子。它按这个值排序。但完全忽略了“日期”。如果我有两篇具有相同mb\\U home值和不同日期的帖子,它只会按照预期的日期ASC而不是日期DESC。

有什么指示吗?我做错了什么?

编辑:这是转储。

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id) INNER JOIN wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id) WHERE 1=1 AND ( wp_posts.ID NOT IN ( SELECT object_id FROM wp_term_relationships WHERE term_taxonomy_id IN (1) ) ) AND wp_posts.post_type IN (\'post\', \'aggregato\') AND (wp_posts.post_status = \'publish\' OR wp_posts.post_author = 1 AND wp_posts.post_status = \'private\') AND (wp_postmeta.meta_key = \'mb_home\' AND (mt1.meta_key = \'mb_home\' AND CAST(mt1.meta_value AS CHAR) > \'0\') ) GROUP BY wp_posts.ID ORDER BY wp_postmeta.meta_value+0,wp_posts.post_date DESC LIMIT 0, 12

1 个回复
SO网友:Rarst

而WordPress目前确实支持多个orderby 它实际上不支持多个order 分别地

这是最近修好的,见票#17065 (Independent ASC/DESC in multiple ORDER BY statement.) 并将在4.0版本中提供新的数组语法:\'orderby\' => array( \'title\' => \'DESC\', \'menu_order\' => \'ASC\' ).

结束

相关推荐

尝试按自定义字段‘Order’排序和显示类别(而不是帖子)

我是WordPress的新手。我在“类别”分类法中添加了一个自定义字段。自定义字段是“custom\\u order”,其目的是保存一个数字,以便我的类别可以按照我选择的顺序进行排序和显示。我的问题是我无法让他们分类;我可以显示类别,以及“echo”每个类别的“custom\\u order”编号,但在访问和排序meta\\u值时,我肯定遗漏了一些东西。我也不确定我的做法是否正确。以下是我将字段添加到“新建类别”页面的代码:<?php function taxonomy_add_new_me