Авторизация по телефону в WordPress: лучшие методы и примеры реализации

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

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

Телефонный номер — это уникальный идентификатор, который пользователь обычно всегда помнит и носит с собой. Использование телефона для входа упрощает процесс авторизации, снижает число забытых паролей и повышает безопасность за счет подтверждения через SMS или мессенджеры.

Кроме того, авторизация по телефону отлично подходит для мобильных пользователей и может быть частью стратегии упрощения UX. Особенно это актуально для сайтов с регистрацией клиентов, интернет-магазинов, сервисов подписки и пр.

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

Для реализации авторизации по телефону можно использовать готовые решения, которые значительно ускоряют процесс внедрения:

  • WP SMS Login — плагин, который добавляет возможность входа по номеру телефона с подтверждением SMS-кодом. Поддерживает несколько SMS-шлюзов.
  • Nextend Social Login and Register — расширяется дополнительными модулями для входа через телефон и соцсети.
  • Miniorange OTP Verification — позволяет настроить двухфакторную аутентификацию с помощью одноразового кода, отправляемого на телефон.
  • My Popup — подходит для создания кастомных форм, в том числе с вводом телефона и отправкой OTP через сторонние сервисы.

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

Пример реализации авторизации по телефону с помощью кода на PHP

Рассмотрим простой пример, как создать форму входа по телефону с отправкой и проверкой одноразового кода (OTP) через SMS-сервис. Для отправки SMS можно использовать сторонние API, например, sms.ru или Twilio.

Основная логика:

  1. Пользователь вводит номер телефона.
  2. Система генерирует OTP и отправляет на телефон.
  3. Пользователь вводит полученный код.
  4. Если код верный — создается или находится пользователь с таким номером и происходит вход.

Регистрация и отправка OTP

add_action('wp_ajax_wpexperts_send_otp', 'wpexperts_send_otp');
add_action('wp_ajax_nopriv_wpexperts_send_otp', 'wpexperts_send_otp');
function wpexperts_send_otp() {
    if ( ! isset($_POST['phone']) ) {
        wp_send_json_error('Телефон не указан');
    }
    $phone = sanitize_text_field($_POST['phone']);
    // Генерируем код
    $otp = rand(100000, 999999);
    // Сохраняем код и время в сессии
    session_start();
    $_SESSION['wpexperts_otp'] = $otp;
    $_SESSION['wpexperts_otp_phone'] = $phone;
    $_SESSION['wpexperts_otp_time'] = time();

    // Отправка SMS через API (пример)
    $message = "Ваш код подтверждения: $otp";
    // Здесь интеграция с API SMS

    wp_send_json_success('Код отправлен');
}

Проверка OTP и авторизация пользователя

add_action('wp_ajax_wpexperts_verify_otp', 'wpexperts_verify_otp');
add_action('wp_ajax_nopriv_wpexperts_verify_otp', 'wpexperts_verify_otp');
function wpexperts_verify_otp() {
    session_start();
    if ( ! isset($_POST['otp']) || ! isset($_POST['phone']) ) {
        wp_send_json_error('Данные не переданы');
    }
    $otp = sanitize_text_field($_POST['otp']);
    $phone = sanitize_text_field($_POST['phone']);

    if ( ! isset($_SESSION['wpexperts_otp'], $_SESSION['wpexperts_otp_phone'], $_SESSION['wpexperts_otp_time']) ) {
        wp_send_json_error('Код не найден, запросите снова');
    }
    if ( time() - $_SESSION['wpexperts_otp_time'] > 300 ) { // 5 минут
        wp_send_json_error('Код истек');
    }
    if ( $otp != $_SESSION['wpexperts_otp'] || $phone != $_SESSION['wpexperts_otp_phone'] ) {
        wp_send_json_error('Неверный код');
    }

    // Ищем пользователя по мета с телефоном
    $user_query = new WP_User_Query(array(
        'meta_key' => 'wpexperts_phone',
        'meta_value' => $phone,
        'number' => 1
    ));
    $users = $user_query->get_results();

    if ( empty($users) ) {
        // Создаем нового пользователя
        $user_id = wp_create_user($phone, wp_generate_password());
        update_user_meta($user_id, 'wpexperts_phone', $phone);
    } else {
        $user_id = $users[0]->ID;
    }

    wp_set_current_user($user_id);
    wp_set_auth_cookie($user_id);

    // Очищаем сессию
    unset($_SESSION['wpexperts_otp'], $_SESSION['wpexperts_otp_phone'], $_SESSION['wpexperts_otp_time']);

    wp_send_json_success('Авторизация успешна');
}

Интеграция с формами и фронтендом

Для удобства пользователей можно создать всплывающее окно или страницу с формой для ввода телефона и кода. Например, с помощью плагина My Popup легко сделать кастомное окно с двумя шагами — ввод номера и ввод кода.

Код JavaScript для отправки AJAX-запросов будет выглядеть так:

jQuery(document).ready(function($){
    $('#send-otp').on('click', function(e){
        e.preventDefault();
        var phone = $('#phone').val();
        $.post(ajaxurl, { action: 'wpexperts_send_otp', phone: phone }, function(response){
            if(response.success) {
                alert('Код отправлен');
                // Показать поле для ввода OTP
            } else {
                alert('Ошибка: ' + response.data);
            }
        });
    });

    $('#verify-otp').on('click', function(e){
        e.preventDefault();
        var otp = $('#otp').val();
        var phone = $('#phone').val();
        $.post(ajaxurl, { action: 'wpexperts_verify_otp', otp: otp, phone: phone }, function(response){
            if(response.success) {
                alert('Вы вошли');
                location.reload();
            } else {
                alert('Ошибка: ' + response.data);
            }
        });
    });
});

Как улучшить и обезопасить авторизацию по телефону

Чтобы сделать авторизацию более надежной, рекомендуется:

  • Использовать двухфакторную аутентификацию, например, дополнительно к коду отправлять email-уведомления.
  • Ввести ограничение на количество попыток ввода кода для защиты от перебора.
  • Использовать надежные SMS-шлюзы с гарантированной доставкой и шифрованием.
  • Хранить телефонные номера в метаданных пользователей с шифрованием или хешированием.
  • Интегрировать с популярными плагинами безопасности, например, Clearfy Pro, для дополнительного контроля доступа.

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

WooCommerce: как автоматически удалять товары с нулевым остатком на складе без плагинов
04.06.2026
Как удалить удалённых пользователей в WordPress: практическое руководство с примерами кода
13.02.2026
Как добавить динамические атрибуты к шорткодам WordPress
28.02.2026
WooCommerce: Автоматическое изменение стоимости товара при определённых условиях
12.05.2026
WooCommerce: автоматическое отключение заказов при отсутствии оплаты
31.05.2026