Зачем добавлять поле телефон в форму регистрации WordPress
Многие сайты на WordPress используют стандартную форму регистрации, которая содержит только имя пользователя и e-mail. Но зачастую для улучшения коммуникации с пользователями, а также для дополнительных возможностей маркетинга и безопасности, необходимо добавить поле «Телефон». Это позволит собирать более полные данные о пользователях, отправлять SMS-уведомления, делать двухфакторную аутентификацию или просто связываться по телефону.
В этой статье я подробно покажу, как добавить поле телефон в форму регистрации WordPress, как проверить корректность ввода, сохранить данные в профиль пользователя и вывести их в админке. Примеры кода будут с префиксом wpapp_ для удобства интеграции.
Добавление поля телефон в форму регистрации WordPress
Для добавления дополнительного поля в форму регистрации нам нужно использовать хук register_form. Ниже пример кода, который добавит поле с меткой «Телефон» и placeholder:
function wpapp_add_phone_field_to_register() {
$phone = ( isset( $_POST['phone'] ) ) ? sanitize_text_field( $_POST['phone'] ) : '';
echo '<p><label for="phone">Телефон <span style="color:red;">*</span></label><br/>';
echo '<input type="text" name="phone" id="phone" class="input" value="' . esc_attr( $phone ) . '" size="25" /></p>';
}
add_action( 'register_form', 'wpapp_add_phone_field_to_register' );Этот код добавляет текстовое поле с обязательным для заполнения знаком, но пока без проверки. Вы можете вставить этот код в файл functions.php вашей темы или создать отдельный плагин.
Валидация поля телефон при регистрации
Важно проверить, что пользователь ввел корректный номер телефона, иначе данные будут невалидны. Для этого используем хук registration_errors. В следующем примере проверяем, что поле не пустое и содержит только цифры, плюс символы «+», «-» и пробелы:
function wpapp_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'] );
if ( ! preg_match( '/^[\d\+\-\s]+$/', $phone ) ) {
$errors->add( 'phone_error_format', '<strong>Ошибка:</strong> Номер телефона содержит недопустимые символы.' );
}
}
return $errors;
}
add_filter( 'registration_errors', 'wpapp_validate_phone_field', 10, 3 );Так мы гарантируем, что в поле попадут только корректные данные.
Сохранение телефона в профиле пользователя
После успешной регистрации нужно сохранить номер телефона в мета-поле пользователя. Для этого используем хук user_register:
function wpapp_save_phone_field( $user_id ) {
if ( ! empty( $_POST['phone'] ) ) {
update_user_meta( $user_id, 'phone', sanitize_text_field( $_POST['phone'] ) );
}
}
add_action( 'user_register', 'wpapp_save_phone_field' );Теперь номер телефона будет сохранен в базе данных и доступен для дальнейшего использования.
Отображение и редактирование телефона в профиле пользователя WordPress
Чтобы администратор мог видеть и редактировать номер телефона, добавим поле на страницу редактирования профиля пользователя. Используем хуки show_user_profile и edit_user_profile для вывода поля и personal_options_update, edit_user_profile_update для сохранения изменений:
function wpapp_show_phone_in_profile( $user ) {
$phone = get_user_meta( $user->ID, 'phone', true );
?>
<h3>Дополнительная информация</h3>
<table class="form-table">
<tr>
<th><label for="phone">Телефон</label></th>
<td>
<input type="text" name="phone" id="phone" value="<?php echo esc_attr( $phone ); ?>" class="regular-text" />
</td>
</tr>
</table>
<?php
}
add_action( 'show_user_profile', 'wpapp_show_phone_in_profile' );
add_action( 'edit_user_profile', 'wpapp_show_phone_in_profile' );
function wpapp_save_phone_in_profile( $user_id ) {
if ( ! current_user_can( 'edit_user', $user_id ) ) {
return false;
}
if ( isset( $_POST['phone'] ) ) {
update_user_meta( $user_id, 'phone', sanitize_text_field( $_POST['phone'] ) );
}
}
add_action( 'personal_options_update', 'wpapp_save_phone_in_profile' );
add_action( 'edit_user_profile_update', 'wpapp_save_phone_in_profile' );Теперь администраторы смогут просматривать и корректировать номера телефонов пользователей без дополнительных плагинов.
Использование номера телефона в уведомлениях и маркетинге
После того, как поле «Телефон» добавлено и сохранено, вы можете использовать эти данные для различных целей. Например, интеграция с SMS-сервисами для отправки уведомлений или двухфакторной аутентификации. Можно также создавать пользовательские сегменты для рассылок, учитывая наличие телефона.
Для отправки SMS можно использовать популярные плагины, такие как WPRemark, который позволяет отправлять уведомления по различным каналам, включая SMS, с гибкой настройкой.
Советы по безопасности и удобству
При добавлении новых полей в регистрацию важно соблюдать баланс между необходимостью сбора данных и удобством пользователя. Чрезмерное количество обязательных полей может отпугнуть новых пользователей. Если телефон не является обязательным, можно убрать проверку на обязательность, но оставить форматирование и валидацию.
Также не забывайте о безопасности данных — храните номера телефонов в зашифрованном виде, если это необходимо, и соблюдайте требования законодательства о защите персональных данных.
Для удобства пользователей можно добавить маску ввода номера телефона с помощью JavaScript или использовать готовые библиотеки, например, jquery.inputmask. Это позволит избежать ошибок при заполнении.
Заключение
Добавить поле «Телефон» в форму регистрации WordPress — задача несложная, но требует аккуратности при валидации и сохранении данных. Использование приведенных выше примеров кода позволит быстро и безопасно расширить функционал стандартной регистрации. А интеграция с плагинами, такими как WPRemark, откроет дополнительные возможности для взаимодействия с пользователями.