wpdownload.ru wordpress WPDownload.ru

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

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

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

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

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

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

Для добавления нового поля мы воспользуемся хуком register_form, который позволяет вывести дополнительный HTML в форму регистрации.

Добавим следующий код в файл functions.php вашей активной темы или в собственный плагин:

function wpdownload_add_phone_field() {
    $phone = ( isset( $_POST['wpdownload_phone'] ) ) ? sanitize_text_field( $_POST['wpdownload_phone'] ) : '';
    ?>
    <p>
        <label for="wpdownload_phone">Телефон <span class="required">*</span></label><br/>
        <input type="text" name="wpdownload_phone" id="wpdownload_phone" class="input" value="<?php echo esc_attr( $phone ); ?>" size="25" />
    </p>
    <?php
}
add_action( 'register_form', 'wpdownload_add_phone_field' );

Этот код выведет текстовое поле с подписью «Телефон» и сделает его обязательным для заполнения. Следующий шаг — проверить, что пользователь действительно заполнил это поле.

Валидация поля телефона при регистрации

Чтобы не допустить пустое или некорректное значение, используем фильтр registration_errors. В нем проверим, что поле «Телефон» присутствует и корректно заполнено.

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

Здесь мы проверяем, что поле не пустое и номер телефона содержит только цифры, пробелы, дефисы, скобки и необязательный знак «+» в начале. При ошибке выводится сообщение, которое увидит пользователь.

Сохранение номера телефона в пользовательских метаданных

Чтобы сохранить телефон, воспользуемся действием user_register. В этой функции мы возьмём значение из формы и запишем в мета-поле пользователя.

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

Теперь номер телефона сохраняется в базе и доступен в метаданных пользователя с ключом wpdownload_phone.

Отображение и редактирование номера телефона в профиле пользователя

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

Для этого используем хуки show_user_profile и edit_user_profile:

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

И сохраняем изменения при обновлении профиля с помощью personal_options_update и edit_user_profile_update:

function wpdownload_save_phone_profile_field( $user_id ) {
    if ( current_user_can( 'edit_user', $user_id ) ) {
        if ( ! empty( $_POST['wpdownload_phone'] ) ) {
            update_user_meta( $user_id, 'wpdownload_phone', sanitize_text_field( $_POST['wpdownload_phone'] ) );
        } else {
            delete_user_meta( $user_id, 'wpdownload_phone' );
        }
    }
}
add_action( 'personal_options_update', 'wpdownload_save_phone_profile_field' );
add_action( 'edit_user_profile_update', 'wpdownload_save_phone_profile_field' );

Используем плагины для расширения функционала поля телефона

Если хочется более удобного решения, без ручного кода, можно использовать плагины, например:

  • User Registration – Custom Registration Form, Login and User Profile for WordPress – позволяет создавать кастомные формы регистрации с любыми полями, в том числе телефона.
  • Profile Builder – мощный плагин для добавления и редактирования пользовательских полей и управления профилями.
  • Advanced Custom Fields (ACF) – с помощью него можно добавить поле телефона и вывести его в шаблонах.

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

Резюме и рекомендации по безопасности

При работе с пользовательскими данными важно:

  • Всегда применять функции очистки и фильтрации данных, например, sanitize_text_field().
  • Проверять корректность введённых данных с помощью регулярных выражений.
  • Обеспечивать корректное отображение и защиту от XSS через esc_attr() и подобные функции.
  • Использовать nonce-поля для защиты форм, если добавляете их на фронтенде.

Таким образом, добавление поля телефона в регистрацию WordPress — задача вполне выполнимая и полезная. Приведённый код можно расширять, например, добавлять валидацию через AJAX, интегрировать с SMS-сервисами, показывать в личном кабинете и т.д.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше