Logga in med telefonnummer på WordPress
Du kanske har placerat ett inloggningsformulär på din WordPress-webbplats. Och du vill tillåta användare att logga in med sitt telefonnummer eller med användarnamn / e-post. I grund och botten tillåter du användare att ange någon av posterna från användarnamn / e-post / telefon och ett lösenord.
Observera, denna handledning har inte för avsikt att visa inloggning med OTP. Istället ska jag lägga till ytterligare ett alternativ för telefonnummer tillsammans med användarnamn och e-post. Så dina användare kan välja vilket alternativ som helst som passar dem. Du såg antagligen detta alternativ på Amazon. Amazon tillåter oss att logga in med antingen e-post eller mobilnummer.
Jag ska skapa ett enkelt inloggningsformulär. På formuläret skicka kommer vi att skriva en kod som kontrollerar referenser i bakgrunden för alla 3 alternativen (Användarnamn / E-post / telefon) och ett lösenord.
För att lägga till ett telefonnummer i ett inloggningsformulär, ska du infoga ett användares telefonnummer i tabellen ‘wp_usermeta’. Du kan göra det vid tidpunkten för användarregistreringen. Koden nedan kan användas för att lägga till ett telefonnummer till en användare.
<?php
$user_id = 1;
$phone_number = 9999999999;
add_user_meta( $user_id, 'user_phone', $phone_number);
När du väl har meta_key ‘user_phone’ tillsammans med dess värde i databasen kan du lägga till inloggning med alternativet telefonnummer i ett inloggningsformulär. Låt oss lägga till följande inloggningsformulär på din inloggningssida.
<?php
$return = log_the_user_in();
if( is_wp_error( $return)) {
echo $return->get_error_message();
}
?>
<form method="post">
<p><input type="text" name="user_login" placeholder="Username, email or mobile" required /></p>
<p><input type="password" name="user_password" placeholder="Password" required /></p>
<input type="hidden" name="login_nonce" value="<?php echo wp_create_nonce('login_nonce'); ?>" />
<input type="submit" name="login_the_user" value="Submit" />
</form>
I ovanstående kod söker vi efter fel och skriver ut dem. Vi kommer att skriva kod för hantering av fel i nästa steg. Dessutom lade vi till en nonce i formuläret som är det rekommenderade sättet att bearbeta formulär i WordPress.
Logga in med telefonnummer på WordPress
När en användare fyller in referenser och trycker på en skicka-knapp tar vi referenserna och verifierar dem mot databasen. Om uppgifterna är korrekta loggar vi in användaren och omdirigerar den till hemsidan. Vid fel autentiseringsuppgifter loggas fel med WP_Error
klass.
Så skriv koden nedan i functions.php
filen som behandlar inloggningsformuläret.
<?php
add_action( 'init', 'log_the_user_in' );
function log_the_user_in() {
if (isset( $_POST['login_the_user']) && wp_verify_nonce( $_REQUEST['login_nonce'], 'login_nonce')) {
if (! empty( $_POST['user_login']) &&! empty( $_POST['user_password'])) {
if (is_email( $_POST['user_login'])) {
// check user by email
$user = get_user_by( 'email', $_POST['user_login'] );
} elseif (is_numeric( $_POST['user_login'])) {
// check user by phone number
global $wpdb;
$tbl_usermeta = $wpdb->prefix.'usermeta';
$user_id = $wpdb->get_var( $wpdb->prepare( "SELECT user_id FROM $tbl_usermeta WHERE meta_key=%s AND meta_value=%s", 'user_phone', $_POST['user_login']) );
$user = get_user_by( 'ID', $user_id );
} else {
// check user by username
$user = get_user_by( 'login', $_POST['user_login'] );
}
if (! $user) {
return new WP_Error('wrong_credentials', 'Invalid credentials.');
}
// check the user's login with their password.
if (! wp_check_password( $_POST['user_password'], $user->user_pass, $user->ID)) {
return new WP_Error('wrong_credentials', 'Invalid credentials.');
}
wp_clear_auth_cookie();
wp_set_current_user($user->ID);
wp_set_auth_cookie($user->ID);
wp_redirect(get_bloginfo('url'));
exit;
} else {
return new WP_Error('empty', 'Both fields are required.');
}
}
}
Här verifierade vi först nonce för att skydda vår form från vissa typer av missbruk, skadlig kod och CSRF-attacker. Därefter söker det efter giltig e-post och telefonnummer baserat på is_email()
eller is_numeric()
metod. Om det angivna värdet inte är ett e-postmeddelande eller en telefon, går vi efter användarnamn. Om uppgifterna är uppfyllda loggar användarna in i systemet och omdirigerar till hemsidan. I ditt fall kan du omdirigera användare till en annan sida enligt ditt flöde.
Jag hoppas att du förstår hur man integrerar inloggning med ett telefonnummer i WordPress. Dela dina tankar och förslag i kommentarsektionen nedan.
relaterade artiklar
- Ladda dynamiskt innehåll på Bootstrap Modal i WordPress
- Hur man bygger anpassad Elementor-widget
- Så här lägger du till anpassade slutpunkter till WordPress API