Zaloguj się za pomocą numeru telefonu w WordPress
Możliwe, że umieściłeś front-endowy formularz logowania na swojej stronie WordPress. I chcesz zezwolić użytkownikom na logowanie się za pomocą swojego numeru telefonu lub przy użyciu nazwy użytkownika/adresu e-mail. Zasadniczo pozwalasz użytkownikom na wprowadzenie jednego z wpisów z nazwy użytkownika / adresu e-mail / telefonu i hasła.
Zwróć uwagę, że ten samouczek nie ma na celu pokazania logowania za pomocą OTP. Zamiast tego dodam jeszcze jedną opcję numeru telefonu wraz z nazwą użytkownika i adresem e-mail. Dzięki temu Twoi użytkownicy mogą wybrać dowolną dogodną dla siebie opcję. Prawdopodobnie widziałeś tę opcję na Amazon. Amazon pozwala nam zalogować się za pomocą adresu e-mail lub numeru telefonu komórkowego.
Zamierzam stworzyć prosty formularz logowania. Na formularzu przesyłania napiszemy kod, który sprawdza poświadczenia w tle dla wszystkich 3 opcji (Nazwa użytkownika/E-mail/Telefon) oraz hasło.
Aby dodać numer telefonu w formularzu logowania, należy wstawić numer telefonu użytkownika w tabeli ‘wp_usermeta’. Możesz to zrobić w momencie rejestracji użytkownika. Poniższy kod służy do dodania numeru telefonu użytkownika.
<?php
$user_id = 1;
$phone_number = 9999999999;
add_user_meta( $user_id, 'user_phone', $phone_number);
Gdy już masz meta_klucz ‘user_phone’ wraz z jego wartością w bazie danych, możesz dodać login z opcją numeru telefonu w formularzu logowania. Umieśćmy poniższy formularz logowania na twojej stronie logowania.
<?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>
W powyższym kodzie sprawdzamy błędy i je drukujemy. W kolejnych krokach napiszemy kod do obsługi błędów. Dodatkowo dodaliśmy jednorazową wartość w formularzu, co jest zalecanym sposobem przetwarzania formularzy w WordPressie.
Zaloguj się za pomocą numeru telefonu w WordPress
Gdy użytkownik wypełni dane uwierzytelniające i naciśnie przycisk przesyłania, pobierzemy dane uwierzytelniające i zweryfikujemy je w bazie danych. Jeśli dane logowania są poprawne, zalogujemy użytkownika i przekierujemy go na stronę główną. W przypadku błędnych poświadczeń, błędy są rejestrowane w WP_Error
klasie.
Napisz poniższy kod w functions.php
pliku, który przetwarza formularz logowania.
<?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.');
}
}
}
Tutaj najpierw zweryfikowaliśmy jednorazowy numer, aby chronić nasz formularz przed niektórymi rodzajami nadużyć, złośliwego kodu i ataków CSRF. Następnie, na podstawie metody is_email()
lub is_numeric()
, sprawdza poprawny adres e-mail i numer telefonu. Jeśli wpisana wartość nie jest adresem e-mail lub telefonem, wybieramy nazwę użytkownika. Jeśli poświadczenia są spełnione, użytkownicy logują się do systemu i przekierowują na stronę główną. W Twoim przypadku możesz przekierować użytkowników na inną stronę zgodnie ze swoim przepływem.
Mam nadzieję, że rozumiesz, jak zintegrować logowanie z numerem telefonu w WordPressie. Podziel się swoimi przemyśleniami i sugestiami w sekcji komentarzy poniżej.
Powiązane artykuły
- Załaduj dynamiczną zawartość na Bootstrap Modal w WordPress
- Jak zbudować niestandardowy widżet Elementor
- Jak dodać niestandardowe punkty końcowe do API WordPress?