Skip to content

Instantly share code, notes, and snippets.

@alokstha1
Created July 7, 2016 16:15
Show Gist options
  • Save alokstha1/164dc5c38ff47ecd367f155154a3286a to your computer and use it in GitHub Desktop.
Save alokstha1/164dc5c38ff47ecd367f155154a3286a to your computer and use it in GitHub Desktop.
Enable Login with Email and username WordPress.
<?php
remove_filter('authenticate', 'wp_authenticate_username_password', 20);
add_filter('authenticate', 'login_with_email', 20, 3);
function login_with_email($user, $email, $password) {
//Check for empty fields
if(filter_var($email, FILTER_VALIDATE_EMAIL) ){
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);
} else {
$user = get_user_by('login', $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
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment