Добавление авторизации через телефон в WordPress

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

Почему стоит использовать авторизацию через телефон в WordPress

Традиционная авторизация по логину и паролю часто вызывает сложности у пользователей: забытые пароли, необходимость создавать сложные комбинации. Авторизация через телефон позволяет упростить вход, используя одноразовые коды (OTP) или SMS-подтверждение.

Кроме удобства, это повышает безопасность — к телефону привязан пользователь, и для входа требуется подтверждение владения устройством.

Для сайта на WordPress такая схема может быть реализована по-разному: с помощью плагинов, сторонних сервисов или кастомного кода.

Обзор плагинов для авторизации по телефону в WordPress

1. WP SMS Login

Плагин позволяет добавить вход через номер телефона с подтверждением SMS-кодом. Поддерживает интеграцию с популярными SMS-шлюзами, такими как Twilio, SMS.ru, и другими. Позволяет настроить отправку OTP и автоматическую регистрацию новых пользователей по номеру.

Основные возможности:

  • Вход и регистрация по номеру телефона
  • Отправка одноразового пароля по SMS
  • Поддержка нескольких SMS-провайдеров
  • Настройка шаблонов сообщений

2. MiniOrange OTP Verification

Этот плагин позволяет добавить многофакторную аутентификацию с использованием OTP, включая подтверждение по телефону. Поддерживает SMS и голосовые звонки для подтверждения.

Преимущества:

  • Поддержка нескольких методов OTP
  • Интеграция с WooCommerce и другими плагинами
  • Возможность настройки времени жизни кода

Реализация авторизации через телефон на примере кастомного кода

Если вы хотите контролировать процесс полностью, можно реализовать авторизацию через телефон с помощью собственного кода и API SMS-провайдера, например, Twilio.

Шаг 1. Добавление поля телефона в форму входа

Для начала добавим поле для ввода номера телефона в форму авторизации WordPress. Для этого используем хук login_form и функцию wpskills_add_phone_field_to_login:

function wpskills_add_phone_field_to_login() {
    ?>
    <p>
        <label for="user_phone">Телефон<br>
        <input type="text" name="user_phone" id="user_phone" class="input" value="" size="20"></label>
    </p>
    <?php
}
add_action('login_form', 'wpskills_add_phone_field_to_login');

Шаг 2. Обработка отправки формы и отправка OTP

При отправке формы нужно проверить номер телефона, сгенерировать одноразовый код и отправить его по SMS. Для примера используем Twilio API.

function wpskills_process_phone_login() {
    if (isset($_POST['user_phone'])) {
        $phone = sanitize_text_field($_POST['user_phone']);
        // Генерируем OTP
        $otp = rand(100000, 999999);
        // Сохраняем OTP и телефон в сессии
        session_start();
        $_SESSION['wpskills_otp'] = $otp;
        $_SESSION['wpskills_phone'] = $phone;

        // Отправка SMS через Twilio
        require_once 'path/to/twilio-php/Services/Twilio.php';
        $AccountSid = 'YOUR_TWILIO_SID';
        $AuthToken = 'YOUR_TWILIO_TOKEN';
        $client = new Services_Twilio($AccountSid, $AuthToken);

        try {
            $client->account->messages->create(array(
                'To' => $phone,
                'From' => 'YOUR_TWILIO_PHONE',
                'Body' => 'Ваш код для входа: ' . $otp
            ));
            wp_redirect(site_url('/otp-verification'));
            exit;
        } catch (Exception $e) {
            wp_die('Ошибка отправки SMS: ' . $e->getMessage());
        }
    }
}
add_action('login_form_login', 'wpskills_process_phone_login');

Шаг 3. Создание страницы для ввода OTP

Создайте страницу с коротким кодом, который выводит форму для ввода кода. На этой странице проверяем введенный код и, если он совпадает, авторизуем пользователя.

function wpskills_otp_form_shortcode() {
    session_start();
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        $user_otp = sanitize_text_field($_POST['otp_code']);
        if ($user_otp == $_SESSION['wpskills_otp']) {
            // Авторизация пользователя по номеру телефона
            $phone = $_SESSION['wpskills_phone'];
            $user = get_users(array(
                'meta_key' => 'billing_phone',
                'meta_value' => $phone,
                'number' => 1,
                'count_total' => false
            ));
            if (!empty($user)) {
                wp_set_current_user($user[0]->ID);
                wp_set_auth_cookie($user[0]->ID);
                wp_redirect(home_url());
                exit;
            } else {
                echo '<p>Пользователь с таким номером не найден.</p>';
            }
        } else {
            echo '<p>Неверный код.</p>';
        }
    }
    return '<form method="post"><label>Введите код из SMS:</label><input type="text" name="otp_code" required><button type="submit">Войти</button></form>';
}
add_shortcode('wpskills_otp_form', 'wpskills_otp_form_shortcode');

Особенности и рекомендации по безопасности

При реализации авторизации через телефон важно соблюдать меры безопасности:

  • Храните OTP в сессии или базе данных с ограниченным временем жизни (обычно 5-10 минут).
  • Используйте защищенное соединение (HTTPS) для всех форм.
  • Ограничивайте количество попыток ввода OTP, чтобы избежать перебора.
  • Валидация и нормализация номеров телефонов обязательна для корректной работы SMS-сервисов.

Также рассмотрите возможность интеграции с плагинами безопасности, например, Clearfy Pro, для улучшения защиты входа.

Заключение

Авторизация через телефон в WordPress — эффективный способ улучшить UX и безопасность. Вы можете использовать готовые решения, такие как WP SMS Login или MiniOrange OTP Verification, либо реализовать кастомную логику с помощью API SMS-провайдеров и собственного кода.

Если хотите быстро и качественно внедрить такую функцию, также обратите внимание на готовые плагины и темы с поддержкой авторизации по телефону, которые представлены на WPShop.ru.

Как удалить атрибут title из изображений в WordPress
01.02.2026
Отложенный запуск задач в WordPress без пингов: практическое руководство
14.04.2026
WooCommerce: как автоматически удалять старые заказы по статусу и времени
02.06.2026
Как добавить собственные типы записей (Custom Post Types) в WordPress: практическое руководство
20.02.2026
WooCommerce не отображает товары после обновления: как исправить
17.04.2026