无法将查询结果作为给定帖子ID的数组进行排序

时间:2014-03-22 作者:Manolo

我想按照与给定的post id数组相同的顺序对查询结果进行排序。E、 g.我有:

$arrayPostsIds = array(30,5,17,10);
我想按这个顺序得到帖子。所以在尝试之后this:

add_filter(\'posts_orderby\', \'edit_posts_orderby\');

function edit_posts_join_paged($join_paged_statement) {
    global $arrayPostsIds_id;
    $join_paged_statement = \'FIELD(ID,\'.implode(\',\',$arrayPostsIds).\')\';
    return $join_paged_statement;   
}
然后我得到新的结果,它应该符合上面的顺序:

$temp = $wp_query; // assign ordinal query to temp variable for later use  
$wp_query = null;
$wp_query = new WP_Query( array( \'post__in\' => $arrayPostsIds, \'ignore_sticky_posts\' => true, \'date_query\' => $date_query ) ); 
但我得到了结果ordered by ID, 所以它没有保持理想的秩序。我忘了什么吗?

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

移除过滤器并add orderby\'=>\'post__in\'. 当您提供ID时,排序顺序不是自动的。

$wp_query = new WP_Query( 
  array(
     \'post__in\' => $arrayPostsIds,
     \'ignore_sticky_posts\' => true, 
     \'date_query\' => $date_query ,
    \'orderby\' => \'post__in\',
  ) 
);

结束

相关推荐

缺少WordPress Apply_Filters()参数

我正在定制Woocommerce Wordpress网站。在Woocommerce产品类别中(class-wc-product.php) 这个get_price 函数应用筛选器,如下所示:function get_price() { return apply_filters(\'woocommerce_get_price\', $this->price, $this); } 在我的功能中。php我想添加一个过滤器,如下所示:add_filter(\'woocomme