WP_QUERY‘orderby=None’问题

时间:2011-09-06 作者:romulodl

我有另一个存储post ID的数据库,我想使用WP\\u查询显示它们,以使用WP默认分页。我使用orderby=>none来保留原始顺序,但结果会根据ID对其进行重新排序。

$ids = array (60, 23, 78, 46, 105, 130)

$args = array (
    \'posts_per_page\' => -1,
    \'post__in\' => $ids,
    \'orderby\' => \'none\'
);

$query = new WP_Query ( $args );

while ( have_posts() ) : the_post();
    echo \'<li>\';
    the_title();
    echo \'</li>\';
endwhile;
有人能帮我吗?

谢谢Romulo De Lazzari

4 个回复
最合适的回答,由SO网友:onetrickpony 整理而成

查询完成后,您可以手动订购:

$ids = array (60, 23, 78, 46, 105, 130)

$args = array (
    \'posts_per_page\' => -1,
    \'post__in\' => $ids,
    \'orderby\' => \'none\'
);

$query = new WP_Query ( $args );

$ordered_posts = array();
foreach($ids as $rpid)
 foreach($query->posts as $index => $fpid)
   if($fpid->ID === $rpid) $ordered_posts[] = $query->posts[$index];

$query->posts = $ordered_posts;

while ($query->have_posts() ) : $query->the_post();
    echo \'<li>\';
    the_title();
    echo \'</li>\';
endwhile;
就像Mamaduka发布的一样,如果是自定义循环,请使用$查询方法而不是全局函数。。。

SO网友:Mamaduka

请尝试以下代码段:

$ids = array (60, 23, 78, 46, 105, 130)

$args = array (
    \'posts_per_page\' => -1,
    \'post__in\' => $ids,
    \'orderby\' => \'none\'
);

$query = new WP_Query ( $args );

while ( $query->have_posts() ) : $query->the_post();
    echo \'<li>\';
    the_title();
    echo \'</li>\';
endwhile;

SO网友:Milo

orderby none只使用MySQL返回的顺序,而不按字段显式排序,通常按ID排序,因为这是MySQL唯一标识每个帖子的方式,也是MySQL能够最有效地从数据库中检索它们的方式。

如果您想要定制订单,则必须循环查看ID数组,并将其与返回的帖子进行匹配。

SO网友:Ravi Patel

对于已输入post中管理的相同订单列表的订单,可以更好地使用post\\uu in。

More info

$ids = array (60, 23, 78, 46, 105, 130)

$args = array (
    \'posts_per_page\' => -1,
    \'post__in\' => $ids,
    \'orderby\' => \'post__in\', 
    \'order\' => \'ASC\', 
);

$query = new WP_Query ( $args );

结束

相关推荐

ORDER=ASC如何影响wp_Query(它在循环中的行为非常奇怪)

我有一个自定义帖子类型的wp\\u查询:events。我有一个七天的日历,在页面上显示特色活动。以下是wp\\U查询和支持代码:https://gist.github.com/1030760你可以在西雅图看到日历。com/日历/这东西很好用,但有一个例外。周日应该会有一场特色活动。如果我将订单=>“asc”更改为订单=>“desc”,我会看到周日的活动,但我会丢失今天的活动。如果我只是删除了order=>项,那么我会看到如果我设置order=>“desc”知道秩序是如何影响我的循环