Добавление поля телефона с подтверждением в форму регистрации WordPress

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

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

Для начала нужно добавить поле телефона в форму регистрации. Сделать это можно с помощью хука register_form. Также важно сохранить значение поля и отобразить ошибку, если телефон введён некорректно.

function wptemplates_add_phone_field() {
    $phone = isset( $_POST['phone'] ) ? sanitize_text_field( $_POST['phone'] ) : '';
    echo '<p>'
       . '<label for="phone">Телефон (обязательно)</label><br/>'
       . '<input type="text" name="phone" id="phone" class="input" value="' . esc_attr( $phone ) . '" size="25" />'
       . '</p>';
}
add_action( 'register_form', 'wptemplates_add_phone_field' );

Далее нужно валидация поля телефона на этапе регистрации. Используем хук registration_errors:

function wptemplates_validate_phone_field( $errors, $sanitized_user_login, $user_email ) {
    if ( empty( $_POST['phone'] ) ) {
        $errors->add( 'phone_error', '<strong>Ошибка</strong>: Пожалуйста, введите номер телефона.' );
    } else {
        $phone = sanitize_text_field( $_POST['phone'] );
        // Пример простой проверки: только цифры и длина 10-15 символов
        if ( ! preg_match( '/^\+?[0-9]{10,15}$/', $phone ) ) {
            $errors->add( 'phone_error', '<strong>Ошибка</strong>: Неверный формат номера телефона.' );
        }
    }
    return $errors;
}
add_filter( 'registration_errors', 'wptemplates_validate_phone_field', 10, 3 );

После успешной регистрации — сохранить номер телефона в мета данных пользователя:

function wptemplates_save_phone_field( $user_id ) {
    if ( ! empty( $_POST['phone'] ) ) {
        update_user_meta( $user_id, 'phone', sanitize_text_field( $_POST['phone'] ) );
    }
}
add_action( 'user_register', 'wptemplates_save_phone_field' );

Реализация подтверждения телефона через SMS

Добавление поля — это только часть задачи. Чтобы повысить безопасность и убедиться, что номер действительно принадлежит пользователю, нужно отправлять SMS с кодом подтверждения. Для этого можно использовать сторонние сервисы SMS (например, Twilio, SMS.ru) и интегрировать их через API.

Пример базовой логики подтверждения:

  • При заполнении формы регистрации пользователь вводит телефон.
  • После отправки формы генерируется случайный код (например, 6 цифр) и отправляется на указанный телефон.
  • Пользователь вводит полученный код в дополнительное поле на следующем шаге.
  • Если код совпадает — регистрация завершается.

Пример генерации и отправки кода через SMS.ru

Для простоты рассмотрим отправку SMS через API SMS.ru.

function wptemplates_send_sms_code( $phone ) {
    $api_id = 'ВАШ_API_ID_SMSRU';
    $code = rand(100000, 999999);
    $message = "Ваш код подтверждения: $code";
    $phone = preg_replace('/[^0-9+]/', '', $phone);

    $url = "https://sms.ru/sms/send?api_id=" . $api_id . "&to=" . urlencode($phone) . "&msg=" . urlencode($message) . "&json=1";
    $response = wp_remote_get($url);

    if (is_wp_error($response)) {
        return false;
    }

    $body = json_decode(wp_remote_retrieve_body($response), true);
    if ($body['status'] == 'OK') {
        // Сохраняем код в сессии или базе
        $_SESSION['wptemplates_sms_code'] = $code;
        return true;
    }
    return false;
}

Для полноценной реализации понадобится:

  • Добавить поле для ввода кода подтверждения в форму (лучше через AJAX для удобства).
  • Сравнивать введённый код с сохранённым в сессии или базе.
  • Блокировать регистрацию, пока код не подтверждён.

Использование плагинов для упрощения задачи

Если хочется не писать всё с нуля, можно использовать готовые плагины с поддержкой поля телефона и SMS-подтверждения:

  • WP SMS Verification — плагин для проверки телефона через SMS на этапе регистрации.
  • Profile Builder — расширенный плагин для регистрации с возможностью добавления кастомных полей и подтверждений.
  • Clearfy Pro (https://wpshop.ru/clearfy-pro/?utm_source=wptemplates.ru&utm_medium=article&utm_campaign=kak-dobavit-pole-telefon-v-formu-registracii-wordpress-s-podtverzhdeniem) — помогает оптимизировать регистрацию и безопасность WordPress, хотя SMS не поддерживает напрямую, но отлично сочетается с кастомными решениями.

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

Выводы и рекомендации по безопасности

Добавление поля телефона с подтверждением — отличный способ повысить качество базы пользователей и безопасность сайта. Главное, уделить внимание:

  • Валидации номера телефона — учитывать международные форматы и возможные ошибки.
  • Надёжной отправке и хранению кода подтверждения — использовать безопасное хранение, например, сессии или транзиенты.
  • Обработке ошибок SMS-сервиса — показывать пользователю понятные сообщения.
  • Не забывать о GDPR и других законах — информировать пользователя о сборе данных.

Таким образом, вы сможете улучшить процесс регистрации и снизить количество фейковых аккаунтов на вашем WordPress-сайте.

Как создать автоматические шаблоны для постов в WordPress с кастомным выводом
08.04.2026
WooCommerce: как автоматически удалять старые корзины покупателей
13.06.2026
WooCommerce: как автоматически удалять старые корзины покупателей
24.07.2026
WooCommerce: как использовать функцию calculate_totals для контроля обновления корзины
27.07.2026
WooCommerce: как изменить стоимость товаров в корзине без пересчета
21.07.2026