按ID按给定顺序对帖子进行排序

时间:2012-11-14 作者:Rovb

在我的主题的后台,用户可以选择在首页显示哪些帖子,也可以选择in which order the selected posts should appear.

我试过这样做:

$aPostsIDs = array(1,3,2); // Note the 3 should appear before the 2
query_posts(array(\'post_type\' => \'page\', 
                  \'post__in\' => $aPostsIDs,
                  \'order_by\' => \'FIELD(ID, \'.implode(\',\',$aPostsIDs).\')\'));
但正如预期的那样,它不起作用。正确的方法according to the codex 是:

add_filter(\'posts_orderby\', \'edit_posts_orderby\');
function edit_posts_orderby($orderby_statement) {
    global $aPostsIDs;
    $orderby_statement = \'FIELD(ID, \'.implode(\',\',$aPostsIDs).\')\';
    return $orderby_statement;
}
但这仍然不起作用!帖子按ID(1、2、3)排序,而不是按给定的顺序(1、3、2)。

我应该去哪里看?谢谢

1 个回复
SO网友:mrwweb

从WordPress 3.5开始orderby 参数将允许该值post__in 按的顺序排序post__in 参数,就像您的示例中一样。

等待或要求3.5以上可能并不理想,但这几乎肯定是做你想做的事情的最好、最简单的方法。

这是relevant trac ticket 如果你想了解详情。

结束

相关推荐

Sorting/Ordering Poll Plugin?

我想创建一个民意调查,其中向用户显示一个简短的项目列表,然后按照他们选择的与问题相关的顺序进行排序。环顾四周一段时间后,我发现WordPress有几个不错的民意调查插件,但它们都是简单的单选按钮/复选框;它们都不支持此类型。编写自己的简单表单非常简单,但我必须以某种方式适应数据存储。如果我能找到某种插件就更好了。