Ordering posts by metadata

时间:2012-10-21 作者:User

在我的插件中,我使用以下说明获取帖子列表:

$args = array(
    \'numberposts\'     => -1,
    \'offset\'          => 0,
    \'meta_query\' => array(
        array(
            \'key\' => \'metadata1\',
            \'value\' => \'80\',
            \'compare\' => \'<=\',
            \'type\' => \'UNSIGNED\'
        ),
        array(
            \'key\' => \'metadata2\',
            \'value\' => \'4.6\',
            \'compare\' => \'<=\',
            \'type\' => \'DECIMAL\'
        ),
    ),
    \'post_type\'       => \'post\',
    \'post_status\'     => \'publish\',
    \'suppress_filters\' => true );

$posts = get_posts($args);

foreach ($posts as $post) {
    // some work on $post
}
我怎样才能订购这些帖子metadata1 升序或按metadata2 提升(请注意metadata1 是无符号整数,并且metadata2 是十进制数。)

2 个回复
最合适的回答,由SO网友:Mridul Aggarwal 整理而成

尝试meta\\u value\\u num

\'meta_key\' => \'metadata1\',
\'orderby\' => \'meta_value_num\'
将这两个参数添加到$args。将metadata1视为数字进行排序

SO网友:Greg Johnson

此外,如果您无法将此功能用于get\\u帖子,我建议您切换到WP_Query.

正如Mridul上面所说,要基于数字进行排序,需要指定\'meta_value_num\'\'orderby\' 参数但是,我不确定您是否可以使用标准get_posts() 呼叫

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在