wordpress - Wordpress REST API“orderby”元值
问题描述
我正在执行以下 GET 请求以获取数据表单 wordpress
http://domain:port/wp-json/wp/v2/announcement?_fields=announcement_category,effective_start_date,effective_end_date
结果如下
[
{
"announcement_category": [
216
],
"effective_start_date": "2020-03-27",
"effective_end_date": "2020-04-16"
},
{
"announcement_category": [
215
],
"effective_start_date": "2020-03-25",
"effective_end_date": "2020-03-31"
}]
我需要按照“announcemet_category”值的 ASC 顺序对我的回复进行排序/排序。(这个数组总是有一个值)我知道“orderby”不支持meta_values。如何启用 meta_value 排序以及如何为此执行查询。请帮忙
解决方案
您应该能够使用以下方法对元值进行排序:
$q = new WP_Query(
// Other query params e.g. post type...
array(
'meta_key' => 'announcement_category',
'orderby' => 'meta_value_num',
'order' => 'ASC',
)
);
基于这个答案。
但是,我认为您的问题是,正如您所指出的,announcement_category
它是一个数组而不是一个数字,您将无法对其进行排序。
如果您无法更改announcement_category
为数字而不是数组,则可以在发送 API 响应之前使用asort对 WordPress 查询的结果进行排序:
$arr1 = array(
array('announcement_category'=>array(216)),
array('announcement_category'=>array(218)),
array('announcement_category'=>array(202)),
array('announcement_category'=>array(300)),
);
function sortByOrder($a, $b) {
return $a['announcement_category'][0] - $b['announcement_category'][0];
}
usort($arr1, 'sortByOrder');
print_r($arr1); // Ordered ascendingly
或者,您可以在客户端使用 javascript 根据需要对响应进行排序:
announcements.sort(function (a, b) {
return a[announcement_category][0] - b[announcement_category][0];
});
推荐阅读
- python - json.dumps 给了我 AttributeError: 'str' object has no attribute 'get'
- angular - 为什么 adal 在 Asp.Net Core 解决方案中不能使用 angular 4?
- javascript - 解构嵌套对象
- python - Selenium + Python + onclick + NoSuchElementException
- node.js - 我需要清除服务器端间隔吗?
- java - 使用递归的引脚金字塔
- scala - Scala设置交叉点性能
- c - 部分匹配后,scanf() 忽略输入的剩余部分?
- php - 在php中替换以@开头的单词
- akka - 如何在 Actor 模型框架(例如,akka.net)中执行非幂等操作(发送电子邮件)?