我应该如何使用API通过电子邮件搜索用户,同时确保它是完全匹配的?

时间:2018-10-15 作者:MostHated

我目前正在使用API通过电子邮件搜索用户,然后获取该用户的ID,然后根据ID对帐户进行更改。唯一的问题是,当我搜索时,搜索似乎不需要精确。我希望它是准确的。

例如,我使用以下方法搜索用户:

"GET /wp-json/wp/v2/[email protected] HTTP/1.1" 200
它会返回正确的用户,但如果我也尝试了:

"GET /wp-json/wp/v2/users?search=username@gmai HTTP/1.1" 200
用户也返回了这一信息。我只是使用一个测试站点进行开发,所以我只有几个用户,但我预见这可能会是一个问题。我需要一次通过电子邮件搜索一个特定的用户,我希望当我得到一个结果时,我可以通过检查json搜索结果中显示的电子邮件地址是否与传递给它的电子邮件匹配来验证它,但它看起来也没有在结果中显示电子邮件地址。

有没有人对我能做些什么让事情更接近我的目标有什么建议?

1 个回复
SO网友:MostHated

我可以通过安装一个名为“PHP Snippits”的插件来实现这一点,该插件允许您添加代码,就像将代码添加到函数一样。php,但通过管理面板。然后,我对如何添加自定义端点以及如何查询用户进行了一些研究,并得出了这个结论。它似乎工作得很好,比我原先希望的要好。我只需向端点发送电子邮件,就可以得到所需的特定用户名。

add_action( \'rest_api_init\', function () {
    register_rest_route( \'endpoint/v1\', \'email/(?P<stringvar>[^/]+)\', array(
        \'methods\'             => \'GET\',
        \'callback\'            => \'user_email\',
        \'permission_callback\' => function () {
            return current_user_can(\'edit_others_posts\');
        },
    ) );
});

function user_email($data) {

    // Get user by their email address
    $user = get_user_by( \'email\', $data[\'stringvar\']);
    $userId = $user->ID;
    $user_data = [$userId, $data[\'stringvar\']];


    wp_reset_postdata();

    return rest_ensure_response($user_data);
}

结束