我目前正在尝试创建一个用于创建应用程序的 API 为此,我需要一个自定义端点,该端点只能从已登录的用户访问,目前使用以下代码完成:register_rest_route( 'wp/v2', 'private/me',array( 'methods' => WP_REST_Server::READABLE, 'callback' => 'get_private'));function get_private($request) { $user = (array) wp_get_current_user(); $user["data"] = (array) $user["data"]; unset($user['data']['user_pass']); // $user = get_user_by('id', 13); if (empty($user)) { return new WP_Error( 'empty_category', 'there is no post in this category', array('status' => 404) ); } $response = new WP_REST_Response($user['data']); $response->set_status(200); return $response;}目前它返回一个没有'user_pass'的用户对象然后,当我使用“register_rest_field”函数时,我什么也得不到(如果在任何默认 api 用户端点上设置,该函数就可以工作register_rest_field('private/me', 'rank_number', array( 'get_callback' => 'get_rank_number', 'update_callback' => null, 'schema' => null ) );function get_rank_number ( $user ) { return (int) get_user_meta($user['id'], 'ck_user_ranking_score_number', true);}问题是,我不知道如何让路线读取已注册休息字段的列表,也不知道是否应该这样做目前,我正在尝试通过扩展 WP_REST_Controller 类来实现它,因为它看起来可以工作有人可以帮助我了解 API 的工作原理或应该如何使用它吗?:/
1 回答
![?](http://img1.sycdn.imooc.com/5458683f00017bab02200220-100-100.jpg)
慕少森
TA贡献2019条经验 获得超9个赞
如果有人遇到同样的问题,wordpress 用户在他们的论坛上回答了我的帖子,
解决方案: var $wp_rest_additional_fields,我在文档中找不到任何关于它的内容,但至少 var 确实存在于全局范围内
因此,使用此代码一切正常
global $wp_rest_additional_fields;
foreach($wp_rest_additional_fields['private/me'] as $key => $value){
$user_data[$key] = call_user_func($value['get_callback'], $user['data']);
}
- 1 回答
- 0 关注
- 72 浏览
添加回答
举报
0/150
提交
取消