wordpress - 无法使用 get_post() 通过 REST API 检索自定义帖子类型数据
问题描述
我正在尝试从自定义帖子类型的单个帖子中获取数据REST API
。使用get_posts()
它可以正常工作:
function single_project($data) {
$args = array(
'post_type' => 'project',
'posts_per_page'=> 1,
'p' => $data
);
return get_posts($args);
}
add_action('rest_api_init', function () {
register_rest_route( 'project/v1', 'post/(?P<id>\d+)', array(
'methods' => 'GET',
'callback' => 'single_project',
'args' => [
'id'
]
));
});
但是在我的前端,我得到了一个数组,我必须从该数组的第一个也是唯一一个项目中获取数据,这并不好。
get_post()
听起来像解决方案,但由于某种原因它不起作用:ID 没有通过 REST API 传递,我不明白为什么。
function single_project($data) {
return get_post($data);
}
add_action() { ... }
代码是相同的。
知道为什么它不起作用吗?
解决方案
如果您查看文档(添加自定义端点 | WordPress REST API),您会注意到它$data
实际上是一个数组,因此您的代码无法执行您期望的操作,因为您将数组传递给get_post()函数需要一个整数(帖子 ID)或一个WP_Post
对象。
所以:
function single_project($data) {
$post_ID = $data['id'];
return get_post($post_ID);
}
add_action('rest_api_init', function () {
register_rest_route( 'project/v1', 'post/(?P<id>\d+)', array(
'methods' => 'GET',
'callback' => 'single_project',
'args' => [
'id'
]
));
});
推荐阅读
- docker - 通过命令行为 docker compose 创建自定义网络
- java - Spring Security 允许每个用户查看他们自己的个人资料,但没有其他人
- android - WorkManager:无法访问主线程上的数据库,因为它可能会长时间锁定 UI
- react-native - 在 React Native App 中使用多个包的优缺点
- javascript - 带参数的 AlaSQL 用户定义函数
- javascript - 更改路由器位置搜索时反应更新组件
- javascript - 使用 typescript react redux 设置 reducer
- excel - VBA 从多个工作表中获取双倍值
- java - 如何在android中将文章标题放在旁边
- java - 创建一个菜单 xml,如 chorm