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
看看orderby和order参数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)