Как добавить авторизацию по телефонному номеру в WordPress

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

Зачем нужна авторизация по номеру телефона в WordPress

Авторизация по телефону – это быстрый способ войти на сайт, используя номер мобильного, а не email или логин. Особенно актуально для сайтов с мобильной аудиторией, сервисов с короткими регистрациями, форумов, маркетплейсов и т.д.

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

  • Удобство для пользователя – не нужно запоминать пароль.
  • Увеличение конверсии регистрации и входа.
  • Повышение безопасности – подтверждение через SMS или одноразовый код.

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

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

1. User Registration – Phone Verification Addon

Плагин расширяет форму регистрации и входа, добавляя проверку номера телефона через SMS. Поддерживает интеграцию с Twilio, Nexmo и другими SMS API.

Плюсы: простота настройки, совместимость с популярными плагинами регистрации.

2. WP SMS Login

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

3. MiniOrange OTP Verification

Поддерживает авторизацию и регистрацию с подтверждением по одноразовому паролю (OTP), отправляемому на телефон.

Все эти плагины можно найти на WPSHOP и использовать в своем проекте.

Как самостоятельно реализовать авторизацию по номеру телефона в WordPress

Если готовые плагины не подходят или нужен более тонкий контроль, можно создать кастомное решение. Ниже пример реализации логики авторизации с использованием SMS-кода через API сервиса (например, Twilio).

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

Для начала расширим стандартную форму входа WordPress, добавив поле для ввода телефона.

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

Шаг 2. Отправляем SMS с кодом подтверждения

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

function wpstudy_send_sms_code($phone) {
    $code = rand(100000, 999999);
    $_SESSION['wpstudy_sms_code'] = $code;
    $_SESSION['wpstudy_phone'] = $phone;

    // Интеграция с Twilio (пример)
    $sid = 'YOUR_TWILIO_SID';
    $token = 'YOUR_TWILIO_TOKEN';
    $twilio = new Twilio\Rest\Client($sid, $token);

    $message = $twilio->messages
                      ->create($phone, // to
                               [
                                   'from' => 'YOUR_TWILIO_PHONE',
                                   'body' => "Ваш код для входа: $code"
                               ]
                      );
}

Шаг 3. Проверяем код и логиним пользователя

После того, как пользователь ввел код, сравниваем его с сохранённым в сессии и находим пользователя по номеру телефона в базе WordPress. Если совпадает – авторизуем.

function wpstudy_handle_phone_login() {
    if (!empty($_POST['user_phone']) && !empty($_POST['sms_code'])) {
        session_start();
        $phone = sanitize_text_field($_POST['user_phone']);
        $code = sanitize_text_field($_POST['sms_code']);

        if (isset($_SESSION['wpstudy_sms_code']) && $_SESSION['wpstudy_sms_code'] == $code && $_SESSION['wpstudy_phone'] == $phone) {
            // Поиск пользователя по мета-данным телефона
            $user_query = new WP_User_Query([
                'meta_key' => 'phone_number',
                'meta_value' => $phone
            ]);
            $users = $user_query->get_results();
            if (!empty($users)) {
                $user = $users[0];
                wp_set_auth_cookie($user->ID);
                wp_redirect(home_url());
                exit;
            } else {
                echo '<p>Пользователь с таким номером не найден.</p>';
            }
        } else {
            echo '<p>Неверный код.</p>';
        }
    }
}
add_action('login_form_login', 'wpstudy_handle_phone_login');

Как сохранить номер телефона у пользователя

Чтобы авторизация по телефону работала, нужно хранить номера в пользовательских мета-данных. Можно добавить поле телефона в профиль пользователя:

function wpstudy_add_phone_field_to_profile($user) {
    ?>
    <h3>Дополнительная информация</h3>
    <table class="form-table">
        <tr>
            <th><label for="phone_number">Телефон</label></th>
            <td>
                <input type="text" name="phone_number" id="phone_number" value="<?php echo esc_attr(get_user_meta($user->ID, 'phone_number', true)); ?>" class="regular-text" />
            </td>
        </tr>
    </table>
    <?php
}
add_action('show_user_profile', 'wpstudy_add_phone_field_to_profile');
add_action('edit_user_profile', 'wpstudy_add_phone_field_to_profile');

function wpstudy_save_phone_field($user_id) {
    if (!current_user_can('edit_user', $user_id)) {
        return false;
    }
    update_user_meta($user_id, 'phone_number', sanitize_text_field($_POST['phone_number']));
}
add_action('personal_options_update', 'wpstudy_save_phone_field');
add_action('edit_user_profile_update', 'wpstudy_save_phone_field');

Советы по безопасности и удобству

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

  • Используйте надежного SMS-провайдера с хорошей доставляемостью.
  • Добавьте ограничение по числу попыток ввода кода, чтобы избежать брутфорса.
  • Обязательно проверяйте формат номера и нормализуйте его (например, в международном формате).
  • Реализуйте таймер повторной отправки SMS, чтобы не перегружать сервис и не раздражать пользователя.
  • При необходимости дополняйте вход проверкой reCAPTCHA или другими методами защиты.

Интеграция с плагинами WPSHOP

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

Также для комплексной работы с пользовательскими данными можно использовать Clearfy Pro, который поможет оптимизировать безопасность и настройки сайта.

Вывод

Авторизация по телефонному номеру в WordPress — мощный инструмент для улучшения UX и безопасности сайта. Используйте готовые решения или создавайте свой функционал, основываясь на приведённых примерах. Помните о безопасности и удобстве для пользователей, и ваш проект станет более современным и конкурентоспособным.

Как избежать проблем с перенаправлениями в WordPress
13.01.2026
Как добавить настройку локализации в плагин WordPress
29.01.2026
WooCommerce: как автоматически удалять неактивные товары через PHP-скрипт
23.05.2026
Как создать многоуровневую навигацию в WordPress
26.11.2025
Автоподгрузка постов в WordPress без плагинов
25.02.2026