...
✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Увійдіть за номером телефону в WordPress

48

Можливо, ви розмістили інтерфейсну форму для входу на своєму веб-сайті WordPress. І ви хочете дозволити користувачам входити за допомогою свого номера телефону або за допомогою імені користувача / електронної пошти. По суті, ви дозволяєте користувачам вводити будь-який із записів із Ім’я користувача / Електронна пошта / Телефон та пароль.

Зверніть увагу, цей посібник не має на меті відображати логін за допомогою OTP. Натомість я збираюся додати ще один варіант номера телефону разом із ім’ям користувача та електронною поштою. Тож ваші користувачі можуть вибрати будь-який зручний для них варіант. Ви, напевно, бачили цей варіант на Amazon. Amazon дозволяє нам входити за допомогою електронної пошти або мобільного номера.

Я збираюся створити просту форму для входу. Під час надсилання форми ми напишемо код, який перевіряє облікові дані у фоновому режимі для всіх 3 варіантів (Ім’я користувача / Електронна пошта / Телефон) та пароль.

Для того, щоб додати номер телефону у форму для входу, слід вставити номер телефону користувача в таблицю ‘wp_usermeta’. Ви можете зробити це під час реєстрації користувача. За допомогою наведеного нижче коду можна додати номер телефону користувача.

<?php
$user_id = 1;
$phone_number = 9999999999;
add_user_meta( $user_id, 'user_phone', $phone_number);

Після того, як у базі даних у вас є мета_ключ ‘user_phone’ разом із його значенням, ви можете додати логін та параметр телефонного номера у формі входу. Давайте розмістимо таку форму входу на вашу сторінку входу.

<?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>

У наведеному вище коді ми перевіряємо наявність помилок та друкуємо їх. На наступних кроках ми напишемо код для обробки помилок. Крім того, ми додали nonce у формі, яка є рекомендованим способом обробки форм у WordPress.

Увійдіть за номером телефону в WordPress

Коли користувач заповнює облікові дані та натискає кнопку "Надіслати", ми візьмемо їх і перевіримо в базі даних. Якщо облікові дані правильні, тоді ми ввійдемо в систему та перенаправимо його на домашню сторінку. У разі неправильних облікових даних помилки реєструються в WP_Errorкласі.

Тож напишіть код нижче у functions.phpфайл, який обробляє форму входу.

<?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.');
        }
    }
}

Тут ми вперше перевірили nonce, щоб захистити нашу форму від певних типів зловживання, зловмисного коду та атак CSRF. Далі, на основі is_email()або is_numeric()методу, він перевіряє наявність дійсних адрес електронної пошти та номера телефону. Якщо введене значення не є електронною поштою чи телефоном, тоді ми використовуємо ім’я користувача. Якщо облікові дані задоволені, користувачі входять у систему та переспрямовують на домашню сторінку. У вашому випадку ви можете перенаправити користувачів на іншу сторінку відповідно до вашого потоку.

Сподіваюся, ви розумієте, як інтегрувати логін із номером телефону в WordPress. Будь ласка, поділіться своїми думками та пропозиціями в розділі коментарів нижче.

Пов’язані статті

Джерело запису: artisansweb.net

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі