Wees eerlijk: hoe vaak heb je een website bezocht waarbij je je ooit eens had geregistreerd, maar waarvan je echt niet meer weet welke gebruikersnaam je destijds had gekozen? Dat zal ongetwijfeld vaker zijn voorgekomen, en ja, het gebeurd iedereen. Een ander veelvoorkomend probleem is dat gebruikers er tijdens het registratieproces achter komen dat de gebruikersnaam die ze willen al bezet is. De oplossing is eigenlijk heel simpel: je kunt gebruikers ook de mogelijkheid geven om in te loggen met hun e-mailadres. De kans dat ze dat vergeten is tenslotte een stuk kleiner!
Hieronder laten we je twee methodes zien waarmee je gemakkelijk een e-mailadres login aan je WordPress site kunt toevoegen: met code en met een plugin.
E-mailadres login toevoegen met behulp van code
Het eerste dat je moet doen is de default authenticatie rechten verwijderen. Dat kun je doen door het volgende stukje code aan je functions.php bestand toe te voegen:
//remove wordpress authentication
remove_filter(‘authenticate’, ‘wp_authenticate_username_password’, 20);
Vervolgens gaan we onze eigen authenticatie toevoegen, namelijk door middel van add_filter.
Kopieer de volgende code in je functions.php bestand:
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);
De code controleert of de velden met de gebruikersnaam (die nu een e-mailadres is) of het wachtwoord leeg zijn. Als geen van beiden leeg zijn, gebruikt het get_user_by om te zoeken naar het e-mailadres van de gebruiker. Wanneer het een geldige gebruiker heeft gevonden, controleert het door middel van de wp_check_password() functie of het wachtwoord correct is.
E-mailadres login toevoegen met behulp van een plugin
Als al die regels code je beginnen te duizelen, kun je ook een e-mailadres login toevoegen met behulp van de WP Email Login plugin. Kwestie van simpelweg de plugin installeren, en het werkt. Je hoeft niet te rotzooien met instellingen, het werkt meteen en het is nog gratis ook.