在WordPress中为API身份验证创建自定义登录功能

在WordPress中为API身份验证创建自定义登录功能,wordpress,wordpress-rest-api,Wordpress,Wordpress Rest Api,我正在尝试在WordPress中创建自定义登录功能。我需要的是使用wp\u users表中的默认user\u pass字段,而不是使用wp\u usermeta表中的自定义用户元值。我知道WordPress中有一个authenticate过滤器钩子,可以用来编写自定义的身份验证函数。问题是我需要的身份验证是针对WordPress API的。我将使用另一个应用程序使用API访问WordPress。因此,在用户通过身份验证后,他可以创建/编辑/删除帖子。有一个插件可用于API身份验证,名为。但它使用

我正在尝试在WordPress中创建自定义登录功能。我需要的是使用
wp\u users
表中的默认
user\u pass
字段,而不是使用
wp\u usermeta
表中的自定义用户元值。我知道WordPress中有一个
authenticate
过滤器钩子,可以用来编写自定义的身份验证函数。问题是我需要的身份验证是针对WordPress API的。我将使用另一个应用程序使用API访问WordPress。因此,在用户通过身份验证后,他可以创建/编辑/删除帖子。有一个插件可用于API身份验证,名为。但它使用客户端id或用户名/密码进行身份验证。有没有办法在这个插件上使用过滤器钩子?或者创建一个自定义函数,通过API对用户进行身份验证?

我可以通过使用插件实现它。该插件支持使用用户名和密码对WordPress API进行身份验证。因此,我使用
authenticate
过滤器来使用自己的自定义登录功能

function custom_auth_signon($user, $username, $password) {
    global $wpdb;
    $user_details = get_user_by('login', $username);

    $query = $wpdb->prepare("SELECT user_id FROM {$wpdb->prefix}usermeta WHERE user_id = " . $user_details->data->ID . " AND meta_key = 'custom_password' AND meta_value = %s", $password);
    $result = $wpdb->get_results($query);
    if ($result[0]->user_id) {
        return $user_details;
    } else {
        return NULL;
    }

}

add_filter('authenticate', 'custom_auth_signon', 30, 3);