我无法从REST API获取用户信息。用户尚未创建任何帖子。我已经安装了基本的身份验证插件。每当我尝试获取用户信息时,都会出现以下错误。
请求:https://example.com/wp-json/wp/v2/users/6
{
"code": "rest_user_cannot_view",
"message": "Sorry, you are not allowed to list users.",
"data": {
"status": 401
}
}
但每当我请求其他用户时,我都会得到信息。
{
"id": 1,
"name": "asdf",
"url": "",
"description": "",
"link": "https://example.com/author/drzvikrant/",
"slug": "asdf",
"avatar_urls": {
"24": "https://secure.gravatar.com/avatar/4bc329d2835e6584d5b492fdc67a5cde?s=24&d=mm&r=g",
"48": "https://secure.gravatar.com/avatar/4bc329d2835e6584d5b492fdc67a5cde?s=48&d=mm&r=g",
"96": "https://secure.gravatar.com/avatar/4bc329d2835e6584d5b492fdc67a5cde?s=96&d=mm&r=g"
},
"meta": [],
"_links": {
"self": [
{
"href": "https://example.com/wp-json/wp/v2/users/1"
}
],
"collection": [
{
"href": "https://example.com/wp-json/wp/v2/users"
}
]
}
}
我需要获得用户信息,即使用户没有创建任何帖子。
最合适的回答,由SO网友:birgire 整理而成
这是在设计和内部WP_REST_Users_Controller::get_item_permissions_check()
例如,我们对count_user_posts( $user->ID, $types )
.
我们注意到count_user_posts()
可使用get_usernumposts
筛选,以便可以将0更改为1/wp/v2/users/\\d+
路线:
add_filter( \'rest_request_before_callbacks\', function( $response, $handler, $request ){
if ( WP_REST_Server::READABLE !== $request->get_method() ) {
return $response;
}
if ( ! preg_match( \'~/wp/v2/users/\\d+~\', $request->get_route() ) ) {
return $response;
}
add_filter( \'get_usernumposts\', function( $count ) {
return $count > 0 ? $count : 1;
} );
return $response;
}, 10, 3 );
但我宁愿建议创建
custom rest route 而不是像这样修改现有的。