В стандартной форме регистрации 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-сайте.