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

Диагностика проблемы: зачем менять поля формы регистрации WooCommerce

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

По умолчанию WooCommerce не предоставляет в админке гибких настроек для полей регистрации, поэтому приходится работать с фильтрами и хуками в коде.

Пошаговое решение: удаление и изменение полей регистрации WooCommerce

Удаление ненужных полей

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

Пример удаления имени и фамилии из формы регистрации:

add_filter('woocommerce_checkout_fields', 'custom_remove_registration_fields');
function custom_remove_registration_fields($fields) {
    unset($fields['account']['account_first_name']);
    unset($fields['account']['account_last_name']);
    return $fields;
}

Этот код нужно добавить в файл functions.php активной темы или в плагин для кастомных функций.

Изменение обязательности поля email

Чтобы сделать поле email необязательным или наоборот, можно изменить параметр 'required':

add_filter('woocommerce_checkout_fields', 'custom_change_email_required');
function custom_change_email_required($fields) {
    $fields['account']['account_email']['required'] = false; // или true
    return $fields;
}

Добавление нового поля — номер телефона

Добавим поле «Номер телефона» в форму регистрации и сохраним его в метаданные пользователя:

add_filter('woocommerce_register_form_start', 'custom_add_phone_field');
function custom_add_phone_field() {
    ?>
    <p class="form-row form-row-wide">
        <label for="reg_billing_phone">Номер телефона <span class="required">*</span></label>
        <input type="tel" class="input-text" name="billing_phone" id="reg_billing_phone" value="<?php if (!empty($_POST['billing_phone'])) echo esc_attr($_POST['billing_phone']); ?>" />
    </p>
    <?php
}

add_action('woocommerce_created_customer', 'custom_save_phone_field');
function custom_save_phone_field($customer_id) {
    if (isset($_POST['billing_phone'])) {
        update_user_meta($customer_id, 'billing_phone', sanitize_text_field($_POST['billing_phone']));
    }
}

Не забудьте добавить проверку валидности номера телефона, например, через хук woocommerce_register_post.

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

Чтобы убедиться, что поля изменились:

  • Откройте страницу регистрации WooCommerce (обычно /my-account/).
  • Проверьте, что ненужные поля отсутствуют.
  • Проверьте, что новые поля отображаются и обязательность корректна.
  • Зарегистрируйтесь новым пользователем и убедитесь, что данные корректно сохраняются в профиле пользователя в админке WordPress (раздел Пользователи → редактирование пользователя).

Частые ошибки и как их исправить

  • Изменения не отображаются: возможно, активен кеш или используется плагин кэширования, очистите кеш сайта и браузера.
  • Ошибки валидации не показываются: не добавлена проверка в хук woocommerce_register_post, добавьте проверку и вывод ошибок.
  • Данные не сохраняются: не добавлен код сохранения в woocommerce_created_customer — обязательно добавьте.
  • Конфликты с темой или плагинами: проверьте на чистой установке WooCommerce, отключите сторонние плагины для поиска конфликта.

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

  • Всегда используйте sanitize_text_field и другие функции очистки данных при сохранении пользовательского ввода.
  • Не удаляйте обязательные поля, если не уверены, что WooCommerce и другие плагина не зависят от них.
  • Если добавляете новые поля, убедитесь, что они валидируются и не создают уязвимости (например, XSS).
  • Для больших сайтов рекомендуем использовать дочернюю тему или отдельный плагин для кастомного кода, чтобы не потерять изменения при обновлении.

Сравнение вариантов изменения полей регистрации WooCommerce

МетодПлюсыМинусы
Использование фильтра woocommerce_checkout_fieldsПростой, не требует сторонних плагиновОграниченные возможности, сложнее добавлять сложные поля
Плагины для кастомизации полей (например, WooCommerce Checkout Field Editor)Удобный интерфейс, быстрое добавление и изменениеДополнительная нагрузка, возможны конфликты
Использование хуков woocommerce_register_form_start и woocommerce_created_customerГибкость, полное управление формой и сохранением данныхТребует знаний PHP, больше кода
Как использовать REST API WordPress для создания собственных приложений
15.12.2025
WooCommerce: как избежать конфликтов между плагинами при работе с заказами
13.06.2026
Как изменить авторские права в футере WordPress без плагина
16.02.2026
Как установить автоматический редирект на новый URL в WordPress
06.03.2026
Как добавить просмотры и лайки в WordPress без плагинов
30.12.2025