WordPress核心充满了惊喜。你可以用它做很多事情。
要向所需的用户角色提供无密码登录,可以修改WordPress处理用户登录身份验证的方式。有一个名为authenticate, 您可以使用它来连接,并扩展授权过程以启用该功能。
WordPress本身通过3个单独的函数钩住这个回调-
wp_authenticate_cookie - 这将验证用户是否已登录wp_authenticate_username_password - 此验证用户名/密码组合wp_authenticate_email_password - 这将验证电子邮件/密码组合
以上功能的优先级为
30.您可以在此处挂接具有更高优先级的函数,并检查这些验证是否返回
WP_Error 对象对于空密码,错误代码为
empty_password. 如果错误和错误代码匹配,您可以执行进一步的验证,以测试是否有使用该登录名/电子邮件的用户,以及他是否是订阅者。
听起来不错吧?这是密码-
function wpse_password_less_login_authentication( $user, $username, $password ) {
if (! is_wp_error($user) && \'empty_password \' !== $user->get_error_code()) {
return $user;
}
if (strpos($username, \'@\')) {
$find_user = get_user_by( \'email\', $username );
} else {
$find_user = get_user_by( \'login\', $username );
}
if ( $find_user && ! is_wp_error( $find_user ) && in_array( \'subscriber\', $find_user->roles, true ) ) {
return $find_user;
}
return $user;
}
add_filter( \'authenticate\', \'wpse_password_less_login_authentication\', 40, 3 );
这个功能应该放在你的主题里面
functions.php (或包含的文件)或在活动插件文件中。