Войти по номеру телефона в WordPress
Возможно, вы разместили интерфейсную форму входа на свой сайт 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. Пожалуйста, поделитесь своими мыслями и предложениями в разделе комментариев ниже.
Статьи по Теме
- Загрузить динамический контент в Bootstrap Modal в WordPress
- Как создать собственный виджет Elementor
- Как добавить пользовательские конечные точки в WordPress API