Увійдіть за номером телефону в WordPress
Можливо, ви розмістили інтерфейсну форму для входу на своєму веб-сайті 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. Будь ласка, поділіться своїми думками та пропозиціями в розділі коментарів нижче.
Пов’язані статті
- Завантажте динамічний вміст у Bootstrap Modal у WordPress
- Як створити власний віджет Elementor
- Як додати власні кінцеві точки до WordPress API