REST API, get user role?

时间:2017-03-10 作者:Shane Piscine

我正试图找出如何从API中检索用户的角色,但我无法对其进行排序。默认情况下是否无法访问此信息?

有人能给我指出正确的方向吗?

4 个回复
最合适的回答,由SO网友:Zachary 整理而成

这完全可以通过在响应中注册您自己的rest字段来实现。

这里有一些关于修改响应数据的文档。https://developer.wordpress.org/rest-api/extending-the-rest-api/modifying-responses/

以下是如何向端点添加角色:

function get_user_roles($object, $field_name, $request) {
  return get_userdata($object[\'id\'])->roles;
}

add_action(\'rest_api_init\', function() {
  register_rest_field(\'user\', \'roles\', array(
    \'get_callback\' => \'get_user_roles\',
    \'update_callback\' => null,
    \'schema\' => array(
      \'type\' => \'array\'
    )
  ));
});
具体来说,我所做的是创建一个名为get_user_roles 它检索用户角色,然后在响应中注册“角色”字段,并告诉它数据来自该函数。

当数据返回array, 所以我告诉模式在schema 传入的数组的属性register_rest_field

SO网友:frank.m

只需传递值为的上下文参数edit 在您的url中:

http://demo.wp-api.org/wp-json/wp/v2/users/1?context=edit
根据WordPress REST API Handbook, 您必须传递context=edit以使该属性出现在响应中。如果不包括?context=edit 这个roles 属性将不显示。

SO网友:Shane Piscine

简单的答案似乎是你无法从这里到达那里。虽然可以创建具有给定角色的用户,但没有(通过此界面)检索用户角色的机制。如果需要,可以扩展API以创建自定义端点,但我可能会采用不同的方法。

SO网友:ShabbyAbby

我试着弄明白了,看起来您可以通过添加edit context 根据您的要求。还可以通过指定roles 请求中。

希望有帮助。

相关推荐

Php致命错误:无法将WP_REST_RESPONSE类型的对象用作wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php中

我向WordPress添加了一个自定义端点,如下所示: add_action( \'rest_api_init\', function () { register_rest_route( \'menc/v1\', \'/crosscat/(?P[\\w-]+)/(?P[\\w-]+)\', array( \'methods\' => \'GET\', \'callback\' => \'dept_cat_api\',&#x