在自定义路由内使用register_rest_field

时间:2019-12-29 20:25:39

标签: php wordpress api

我目前正在尝试创建一个API,该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 个答案:

答案 0 :(得分:0)

万一遇到同样的问题,一位WordPress用户在其论坛上回答了我的帖子,

解决方案: 变量$ wp_rest_additional_fields,我在文档中找不到任何有关它的信息,但是至少var确实存在于全局范围中

因此,使用此代码,一切正常

formdata.append("file",fil[0]);