업데이트 :
로그인, 등록 및 이메일로 비밀번호 검색을위한 플러그인을 만들었습니다. https://wordpress.org/plugins/smart-wp-login/
간단히 말해, 이메일로 로그인하도록 WordPress를 구성 할 수 있습니다.
세 단계 :
- 기본 인증 기능 제거
- 맞춤 인증 기능 추가
- wp-login.php의 "Username"텍스트를 "Email"로 변경
하나의 참고 사항 :
WordPress 기본 인증 기능을 제거하십시오.
워드 프레스는 " 인증 "필터를 사용하여 사용자 로그인시 추가 검증을 수행합니다.
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', __('<strong>ERROR</strong>: Email field is empty.'));
}
else if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ //Invalid Email
$error->add('invalid_username', __('<strong>ERROR</strong>: Email is invalid.'));
}
if(empty($password)){ //No password
$error->add('empty_password', __('<strong>ERROR</strong>: 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', __('<strong>ERROR</strong>: 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', __('<strong>ERROR</strong>: Either the email or password you entered is invalid.'));
return $error;
}else{
return $user; //passed
}
}
}, 20, 3);
wp-login.php의 "Username"텍스트를 "Email"로 변경
핵심 파일을 편집하지 않고 gettext 필터를 사용 하여 "Username"텍스트를 "Email"로 변경할 수 있습니다 .
add_filter('gettext', function($text){
if(in_array($GLOBALS['pagenow'], array('wp-login.php'))){
if('Username' == $text){
return 'Email';
}
}
return $text;
}, 20);
또한 내 블로그 http://www.thebinary.in/blog/wordpress-login-using-email/ 에서 자세한 기사를 작성했습니다 .