为了账号安全,请及时绑定邮箱和手机立即绑定

在自定义路由中使用 register_rest_field

在自定义路由中使用 register_rest_field

PHP
函数式编程 2022-07-09 10:02:25
我目前正在尝试创建一个用于创建应用程序的 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 回答

?
慕少森

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']);

    }


查看完整回答
反对 回复 2022-07-09
  • 1 回答
  • 0 关注
  • 72 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信