我想按照与给定的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, 所以它没有保持理想的秩序。我忘了什么吗?
最合适的回答,由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\',
)
);