如果你想按给定数组对WP_Query
帖子进行排序,你可以使用pre_get_posts
过滤钩子来自定义排序。
以下是一个示例代码,它将按照给定的数组顺序对WP_Query
的结果进行排序:
// 在pre_get_posts过滤器中自定义排序
function custom_orderby($query) {
// 仅在主查询上进行操作
if ( $query->is_main_query() ) {
// 指定需要排序的帖子ID数组
$post_ids = array( 2, 5, 3, 1, 4 ); // 这里按照你的需求提供帖子ID的顺序
// 将查询结果按照给定数组顺序排序
$query->set( 'orderby', 'post__in' );
$query->set( 'post__in', $post_ids );
}
}
add_action( 'pre_get_posts', 'custom_orderby' );
在这个示例中,custom_orderby
函数是我们自定义排序的地方。它首先检查是否是主查询,以确保仅对主查询结果进行排序。
然后,我们指定了一个帖子ID数组,这个数组决定了帖子的排序顺序。你需要按照你的需求提供帖子ID的顺序。
最后,我们使用$query->set()
方法来设置排序参数。orderby
参数设置为post__in
,表示按照post__in
参数中提供的帖子ID的顺序进行排序。post__in
参数设置为之前指定的帖子ID数组。
通过这种方式,WP_Query
将按照给定数组的顺序对帖子进行排序。记得将示例代码添加到你的主题的functions.php
文件中。
上一篇:按给定顺序重新排序列表