阅读:1772回复:0
WordPress实现用户使用Email地址登录
[tr][td]对于忘记注册的用户名这种情况,可谓再常见不过了……幸运的是,您可以在登录界面增加一个“使用Email登录”的选项,这样,我们可爱的用户应该不会再为登录不上 WordPress 而苦恼了吧?代码添加 Email 登录功能,添加以下代码至 Functions.php:
[*]//remove wordpress authentication [*]remove_filter(‘authenticate’, ‘wp_authenticate_username_password’, 20); [*] [*]add_filter(‘authenticate’, function($user, $email, $password){ [*] [*] //Check for empty fields [*] if(empty($email) || empty ($password)){ [*] //create new error object and add errors to it. [*] $error = new WP_Error(); [*] [*] if(empty($email)){ //No email [*] $error->add(’empty_username’, __(‘ERROR: Email field is empty.’)); [*] } [*] else if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ //Invalid Email [*] $error->add(‘invalid_username’, __(‘ERROR: Email is invalid.’)); [*] } [*] [*] if(empty($password)){ //No password [*] $error->add(’empty_password’, __(‘ERROR: Password field is empty.’)); [*] } [*] [*] return $error; [*] } [*] [*] //Check if user exists in WordPress database [*] $user = get_user_by(‘email‘, $email); [*] [*] //bad email [*] if(!$user){ [*] $error = new WP_Error(); [*] $error->add(‘invalid’, __(‘ERROR: Either the email or password you entered is invalid.’)); [*] return $error; [*] } [*] else{ //check password [*] if(!wp_check_password($password, $user->user_pass, $user->ID)){ //bad password [*] $error = new WP_Error(); [*] $error->add(‘invalid’, __(‘ERROR: Either the email or password you entered is invalid.’)); [*] return $error; [*] }else{ [*] return $user; //passed [*] } [*] } [*]}, 20, 3); </strong> [/td][/tr] |
|