无法通过REST API获取尚未创建任何帖子的用户的信息

时间:2019-03-08 作者:Sagar Bahadur Tamang

我无法从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"
            }
        ]
    }
}
我需要获得用户信息,即使用户没有创建任何帖子。

1 个回复
最合适的回答,由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 而不是像这样修改现有的。