Авторизация по телефону становится всё более популярной альтернативой классическому входу через email и пароль. В WordPress такую систему можно реализовать с помощью плагинов или кастомных решений. В этой статье разберём, как добавить авторизацию по телефону, какие плагины использовать и приведём примеры кода для интеграции SMS-подтверждения.
Почему стоит добавить авторизацию по телефону в WordPress
Авторизация по номеру телефона повышает удобство и безопасность для пользователей. Это удобно для сайтов сообщественной направленности, новостных порталов, магазинов и сервисов, где важна быстрая регистрация и вход без необходимости запоминать пароли.
Преимущества:
- Удобство: пользователи вводят только номер телефона.
- Безопасность: подтверждение через SMS снижает риск взлома.
- Увеличение конверсии входа и регистрации.
Выбор плагина для авторизации по телефону в WordPress
Для реализации авторизации по телефону можно использовать готовые плагины, которые значительно упрощают задачу.
Плагин WP SMS Login
WP SMS Login позволяет входить и регистрироваться через номер телефона с подтверждением SMS. Плагин интегрируется с несколькими SMS-шлюзами и легко настраивается.
- Настройка SMS-провайдера
- Поддержка кастомных форм входа
- Автоматическая регистрация
Скачать и настроить плагин можно на странице плагина WP SMS Login.
Плагин MiniOrange OTP Verification
MiniOrange OTP Verification позволяет добавить подтверждение по одноразовому паролю (OTP) через SMS при регистрации и входе. Поддерживает множество сервисов доставки SMS, прост в интеграции.
- Вход и регистрация с OTP
- Поддержка WooCommerce и BuddyPress
- Гибкие настройки безопасности
Подробнее и скачать: MiniOrange OTP Verification.
Пример кастомной реализации авторизации по телефону с использованием плагина JournalX
Если хочется реализовать авторизацию по телефону с кастомными возможностями и интеграцией с вашим сайтом, можно использовать плагин JournalX как основу и добавить туда обработку SMS и входа.
Основные шаги:
- Добавить поле ввода телефона на страницу входа/регистрации.
- Отправлять SMS с кодом подтверждения на указанный номер.
- Проверять введённый код и создавать или входить в пользователя.
Добавление поля телефона
function journalx_add_phone_field() {
?>
<p>
<label for="journalx_phone">Номер телефона<br>
<input type="text" name="journalx_phone" id="journalx_phone" class="input" value="" size="20" /></label>
</p>
<?php
}
add_action('login_form', 'journalx_add_phone_field');Этот код добавит поле для ввода номера телефона на страницу входа.
Отправка и проверка SMS-кода
Для отправки SMS можно использовать сторонние сервисы, например, Twilio, через их API. Ниже пример функции отправки кода с использованием Twilio:
function journalx_send_sms_code($phone, $code) {
$sid = 'TWILIO_SID';
$token = 'TWILIO_AUTH_TOKEN';
$client = new Twilio\Rest\Client($sid, $token);
try {
$client->messages->create(
$phone,
['from' => 'YOUR_TWILIO_NUMBER', 'body' => 'Ваш код подтверждения: ' . $code]
);
} catch (Exception $e) {
error_log('Ошибка отправки SMS: ' . $e->getMessage());
}
}После отправки кода необходимо сохранить его в сессии или в базе для проверки при вводе пользователем.
Обработка входа по телефону и коду
Обработчик формы должен проверить номер телефона и введённый код. Если код совпадает, нужно найти пользователя по номеру телефона или создать нового, а затем выполнить вход.
function journalx_handle_phone_login() {
if(isset($_POST['journalx_phone']) && isset($_POST['journalx_code'])) {
$phone = sanitize_text_field($_POST['journalx_phone']);
$code = sanitize_text_field($_POST['journalx_code']);
$saved_code = get_transient('journalx_sms_code_' . $phone);
if($saved_code && $saved_code === $code) {
$user = get_users(['meta_key' => 'phone_number', 'meta_value' => $phone, 'number' => 1]);
if(empty($user)) {
// Создаём нового пользователя
$user_id = wp_create_user('user_' . $phone, wp_generate_password(), $phone . '@example.com');
update_user_meta($user_id, 'phone_number', $phone);
$user = get_user_by('ID', $user_id);
} else {
$user = $user[0];
}
wp_set_current_user($user->ID);
wp_set_auth_cookie($user->ID);
wp_redirect(home_url());
exit;
} else {
wp_die('Неверный код подтверждения');
}
}
}
add_action('login_form_login', 'journalx_handle_phone_login');Советы по безопасности и удобству
При реализации авторизации по телефону стоит учитывать следующие моменты:
- Используйте временные коды с ограничением по времени (например, 5 минут).
- Ограничьте количество попыток ввода кода для предотвращения перебора.
- Шифруйте и безопасно храните номера телефонов и коды.
- Обеспечьте удобный интерфейс для ввода телефона и кода.
Также можно комбинировать авторизацию по телефону с другими методами, например, с классическим паролем или OAuth.
Заключение
Добавление авторизации по телефону в WordPress — задача вполне решаемая как с помощью готовых плагинов, так и через кастомную реализацию. Важно продумать безопасность и удобство для пользователей. Использование плагинов WP SMS Login или MiniOrange OTP Verification может сильно сэкономить время, а если нужна уникальная логика — кастомный код на базе плагина JournalX станет хорошим решением.
Для подробного знакомства с плагинами и скачивания смотрите официальный каталог плагинов WPShop.