Accedi con il numero di telefono in WordPress
Potresti aver inserito un modulo di accesso front-end sul tuo sito Web WordPress. E vuoi consentire agli utenti di accedere con il loro numero di telefono o utilizzando nome utente/e-mail. Fondamentalmente, stai consentendo agli utenti di inserire una qualsiasi delle voci tra Nome utente/Email/Telefono e una password.
Tieni presente che questo tutorial non intende mostrare l’accesso con OTP. Invece, aggiungerò un’altra opzione di numero di telefono insieme a nome utente ed e-mail. Quindi i tuoi utenti possono scegliere qualsiasi opzione che sia conveniente per loro. Probabilmente hai visto questa opzione su Amazon. Amazon ci consente di accedere con e-mail o numero di cellulare.
Creerò un semplice modulo di accesso. Sul modulo di invio, scriveremo un codice che controlla le credenziali in background per tutte e 3 le opzioni (Nome utente/Email/Telefono) e una password.
Per aggiungere un numero di telefono in un modulo di accesso, è necessario inserire un numero di telefono di un utente nella tabella ‘wp_usermeta’. Puoi farlo al momento della registrazione dell’utente. Il codice seguente può essere utilizzato per aggiungere un numero di telefono di un utente.
<?php
$user_id = 1;
$phone_number = 9999999999;
add_user_meta( $user_id, 'user_phone', $phone_number);
Una volta che hai meta_key ‘user_phone’ insieme al suo valore nel database, puoi aggiungere l’accesso con l’opzione del numero di telefono in un modulo di accesso. Mettiamo il seguente form di login nella tua pagina di login.
<?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>
Nel codice sopra, stiamo controllando gli errori e stampandoli. Scriveremo il codice per la gestione degli errori nei passaggi successivi. Inoltre, abbiamo aggiunto un nonce nel modulo che è il modo consigliato di elaborare i moduli in WordPress.
Accedi con il numero di telefono in WordPress
Quando un utente inserisce le credenziali e preme un pulsante di invio, prenderemo le credenziali e le verificheremo sul database. Se le credenziali sono corrette, effettueremo il login dell’utente e lo reindirizzeremo alla home page. In caso di credenziali errate, gli errori vengono registrati con la WP_Error
classe.
Quindi scrivi il codice qui sotto nel functions.php
file che elabora il form di login.
<?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.');
}
}
}
Qui, abbiamo prima verificato il nonce per proteggere il nostro modulo da alcuni tipi di uso improprio, codice dannoso e attacchi CSRF. Successivamente, in base a is_email()
o is_numeric()
metodo, verifica la presenza di e-mail e numero di telefono validi. Se il valore inserito non è un’e-mail o un telefono, scegliamo nome utente. Se le credenziali sono soddisfatte, gli utenti accedono al sistema e reindirizzano alla home page. Nel tuo caso, puoi reindirizzare gli utenti a un’altra pagina secondo il tuo flusso.
Spero che tu capisca come integrare l’accesso con un numero di telefono in WordPress. Per favore condividi i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.
articoli Correlati
- Carica contenuto dinamico su Bootstrap Modal in WordPress
- Come creare un widget Elementor personalizzato
- Come aggiungere endpoint personalizzati all’API di WordPress