WordPress Rest API获取用户邮箱、昵称、登录名等更多信息

WordPress Rest API获取特定用户资料接口:

GET /wp/v2/users/<id>

官方手册:https://developer.wordpress.org/rest-api/reference/users/#retrieve-a-user

实际调用时,所列字段并不能全部返回,多是涉及隐私的部分,如邮箱等。

别无他法,暂时只能手动拓展:

function get_profile_fields( $object, $field_name, $request ) {
    $user_info = get_user_by( 'id',  $object['id'] );
    $profile = array (
        // 'id' => $user_info->id,
        // 'user_first_name' => $user_info->first_name,
        // 'user_last_name' => $user_info->last_name,
        'user_name' => $user_info->user_login,
        'user_email' => $user_info->user_email,
        // 'user_nickname' => $user_info->user_nickname,
        'user_display_name' => $user_info->display_name,
    );
    return $profile;
}

function add_profile_fields() {
    register_rest_field(
        'user', 
        'profile',
        array(
            'get_callback'    => 'get_profile_fields',
            'update_callback' => null,
            'schema'          => null,
        )
    );
}
add_action( 'rest_api_init', 'add_profile_fields' );

在WordPress主环境中,用户的一切信息都能抓取,用register_rest_field注册新对象profile,按需返回数据。

更推荐的做法是返回的数据最好隐藏部分,不要完整返回。

// hideSensitive 自定义敏感字符串处理
// 比如邮箱返回类似:2323******23@qq.com 
user_email' => hideSensitive($user_info->user_email),

(版权归cpury.com所有,转载请注明出处。)