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

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

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

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

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

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

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

1. MiniOrange OTP Verification

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

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

  • Поддержка множества стран и SMS-провайдеров.
  • Возможность настройки SMS-шаблонов.
  • Интеграция с WooCommerce и другими плагинами.

Чтобы начать, установите плагин и настройте SMS-провайдера в его настройках.

2. WP SMS Verification

Простой плагин для добавления проверки номера телефона через SMS при регистрации и авторизации.

Особенности:

  • Легкая настройка и интеграция.
  • Поддержка популярных SMS-шлюзов.
  • Возможность кастомизации форм.

3. Custom SMS Login (самописное решение)

Если вы хотите полный контроль, можно реализовать авторизацию по телефону самостоятельно, используя WordPress REST API и сторонние SMS-сервисы, например, Twilio.

Ниже пример базовой реализации:

function wpboard_send_sms_code($phone) {
    // Здесь вызов API SMS-провайдера, например Twilio
    $code = rand(100000, 999999);
    set_transient('wpboard_sms_code_'. $phone, $code, 10 * MINUTE_IN_SECONDS);
    // Отправка SMS с кодом
    return $code;
}

function wpboard_verify_sms_code($phone, $input_code) {
    $saved_code = get_transient('wpboard_sms_code_'. $phone);
    if ($saved_code && $saved_code == $input_code) {
        delete_transient('wpboard_sms_code_'. $phone);
        return true;
    }
    return false;
}

Этот код генерирует и сохраняет код подтверждения с помощью transient API, отправляет SMS (код отправки нужно реализовать через API выбранного сервиса), и проверяет введенный пользователем код.

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

Основная идея — заменить стандартный логин на форму с вводом телефона и одноразового кода. Для этого нужно:

  1. Создать форму для ввода номера телефона.
  2. Отправить SMS с кодом подтверждения.
  3. Получить и проверить код, а после — авторизовать пользователя.

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

function wpboard_authenticate_by_phone($phone) {
    $user = get_users(array(
        'meta_key' => 'phone_number',
        'meta_value' => $phone,
        'number' => 1,
        'count_total' => false
    ));

    if (!empty($user)) {
        wp_set_auth_cookie($user[0]->ID);
        wp_set_current_user($user[0]->ID);
        return true;
    }
    return false;
}

Обратите внимание, что для хранения номера телефона у пользователей должен быть добавлен метаполе user meta с ключом phone_number. Можно добавить поле при регистрации или в профиле пользователя.

Особенности и безопасность авторизации по телефону

Несмотря на удобство, авторизация по телефону требует внимания к безопасности:

  • Проверяйте корректность номера телефона. Для этого используйте библиотеки валидации или регулярные выражения.
  • Ограничьте количество попыток ввода кода, чтобы избежать перебора.
  • Используйте HTTPS для защиты данных при передаче.
  • Храните коды в transient с ограниченным сроком действия.

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

Как добавить поле телефона в профиль пользователя WordPress

Для хранения и редактирования номера телефона можно использовать следующий код:

function wpboard_add_phone_field($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" /><br />
                <span class="description">Введите номер телефона пользователя.</span>
            </td>
        </tr>
    </table>
    <?php
}
add_action('show_user_profile', 'wpboard_add_phone_field');
add_action('edit_user_profile', 'wpboard_add_phone_field');

function wpboard_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', 'wpboard_save_phone_field');
add_action('edit_user_profile_update', 'wpboard_save_phone_field');

Это добавит поле в профиль пользователя и позволит сохранять номер телефона.

Заключение

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

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

Как использовать хук woocommerce_order_status_changed для автоматизации в WooCommerce
31.05.2026
Как удалить комментарии по автору в WordPress
22.01.2026
Как использовать WooCommerce Order Meta для дополнительных данных заказа
19.05.2026
Использование хука woocommerce_new_order для интеграции с внешними сервисами
10.05.2026
Как отключить автоматическое обновление плагинов в WordPress
18.02.2026