【发布时间】:2015-01-12 15:15:07
【问题描述】:
我正在尝试对 wp_query 的结果进行排序,我想通过不同的参数对其进行排序,而无需再次进行查询。我有类似的东西:
$the_query = new WP_Query( $args );
我想对 $the_query 进行排序,WP_Query 返回一个这样的结构:
$the_query->posts[0]->title;
所以,例如,我想按“标题”对所有元素进行排序。我试过这个:
usort($the_query->posts, function($a, $b) {
return $a['title'] - $b['title'];
});
我想在完成查询后进行排序。是因为我想排序很多次,我不想每次排序时都做查询
解决方案
这会返回致命错误:不能使用 WP_Post 类型的对象作为数组
usort($the_query->posts, function($a, $b) {
return $a['title'] - $b['title'];
});
这是因为数组的结构是这样的:
$the_query->posts[0]->title;
所以你必须将$a['title'] - $b['title'] 更改为$a->title - $b->title
并使用 Pieter Goosen 的答案,最终结果是:
usort($the_query->posts, function($a, $b) {
return strcasecmp(
$a->title,
$b->title
);
});
谢谢大家
【问题讨论】:
-
+1 为您的问题提供了出色的简洁格式 :-)
标签: php arrays sorting wordpress