如何对wp_query的结果进行排序

Jua*_* R. 4 php arrays sorting wordpress wp-query

我正在尝试对wp_query的结果进行排序,我希望通过不同的参数对其进行排序,而无需再次进行查询.我有类似的东西:

$the_query = new WP_Query( $args );
Run Code Online (Sandbox Code Playgroud)

我想要排序$ the_query,WP_Query返回一个这样的结构:

$the_query->posts[0]->title; 
Run Code Online (Sandbox Code Playgroud)

所以,我想用'title'对所有元素进行排序.我试过这个:

usort($the_query->posts, function($a, $b) {
   return $a['title'] - $b['title'];
});
Run Code Online (Sandbox Code Playgroud)

我想在查询之后进行排序.是因为我想要多次tosort,我不想每次我想要排序时进行查询

这将返回致命错误:无法使用WP_Post类型的对象作为数组

usort($the_query->posts, function($a, $b) {
   return $a['title'] - $b['title'];
});
Run Code Online (Sandbox Code Playgroud)

这是因为数组的结构是这样的:

$the_query->posts[0]->title; 
Run Code Online (Sandbox Code Playgroud)

所以你必须要改变$a['title'] - $b['title']$a->title - $b->title ,用彼得·古森的答案最后的结果是:

usort($the_query->posts, function($a, $b) {
    return strcasecmp( 
            $a->title, 
            $b->title
        );
});
Run Code Online (Sandbox Code Playgroud)

谢谢大家

Pie*_*sen 10

看看orderbyorder参数WP_Query.如果需要按帖子标题排序,可以将以下内容添加到查询参数中

'orderby' => 'title'
'order' => 'ASC'
Run Code Online (Sandbox Code Playgroud)

编辑

如果需要进行排序usort,可以执行以下操作

usort($the_query->posts, function($a, $b) {
   return strcasecmp( 
                $a->post_title, 
                $b->post_title 
            );
});
Run Code Online (Sandbox Code Playgroud)