WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Войти по номеру телефона в WordPress

828

Возможно, вы разместили интерфейсную форму входа на свой сайт WordPress. И вы хотите разрешить пользователям входить в систему со своим номером телефона или с помощью имени пользователя / электронной почты. По сути, вы позволяете пользователям вводить любую из одной записи из имени пользователя / электронной почты / телефона и пароля.

Обратите внимание, это руководство не предназначено для отображения входа с использованием OTP. Вместо этого я собираюсь добавить еще один вариант номера телефона вместе с именем пользователя и адресом электронной почты. Таким образом, ваши пользователи могут выбрать любой удобный для них вариант. Вы наверняка видели этот вариант на Amazon. Amazon позволяет нам входить в систему, используя электронную почту или номер мобильного телефона.

Я собираюсь создать простую форму входа. В форме отправки мы напишем код, который проверяет учетные данные в фоновом режиме для всех 3 вариантов (имя пользователя / электронная почта / телефон) и пароля.

Чтобы добавить номер телефона в форму входа, вы должны вставить номер телефона пользователя в таблицу wp_usermeta. Сделать это можно при регистрации пользователя. Приведенный ниже код можно использовать для добавления номера телефона пользователя.

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

Если у вас есть meta_key ‘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>

В приведенном выше коде мы проверяем ошибки и печатаем их. На следующих шагах мы напишем код для обработки ошибок. Кроме того, мы добавили одноразовый номер в форму, который является рекомендуемым способом обработки форм в 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.');
        }
    }
}

Здесь мы сначала проверили одноразовый номер, чтобы защитить нашу форму от определенных типов неправильного использования, вредоносного кода и CSRF-атак. Затем, на основе метода is_email()или is_numeric(), он проверяет действительный адрес электронной почты и номер телефона. Если введенное значение не является адресом электронной почты или телефоном, мы выбираем имя пользователя. Если учетные данные удовлетворены, пользователи входят в систему и перенаправляются на домашнюю страницу. В вашем случае вы можете перенаправлять пользователей на другую страницу в соответствии с вашим потоком.

Надеюсь, вы понимаете, как интегрировать логин с номером телефона в WordPress. Пожалуйста, поделитесь своими мыслями и предложениями в разделе комментариев ниже.

Статьи по Теме

Источник записи: artisansweb.net

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее