Кастомизация полей оформления заказа WooCommerce без плагинов: полное руководство

Диагностика: зачем и когда нужно кастомизировать поля оформления заказа

В стандартной форме оформления заказа WooCommerce часто не хватает специфических полей (например, номер ИНН, дополнительная информация для доставки, согласие с условиями), либо некоторые поля нужно изменить, сделать обязательными или скрыть. Плагины для кастомизации полей могут замедлять сайт или конфликтовать с темой. Поэтому лучше реализовать кастомизацию через код в functions.php или отдельном сниппете.

Как добавить, изменить и удалить поля оформления заказа

1. Удаление стандартных полей

Для удаления ненужных полей используйте фильтр woocommerce_checkout_fields. Например, чтобы убрать поле "Компания":

add_filter('woocommerce_checkout_fields', function($fields) {
    unset($fields['billing']['billing_company']);
    return $fields;
});

2. Добавление нового поля

Чтобы добавить свое поле, например "ИНН", добавьте его в массив полей и задайте параметры:

add_filter('woocommerce_checkout_fields', function($fields) {
    $fields['billing']['billing_inn'] = [
        'type'        => 'text',
        'label'       => __('ИНН', 'woocommerce'),
        'required'    => true,
        'class'       => ['form-row-wide'],
        'clear'       => true,
        'priority'    => 45,
        'placeholder' => __('Введите ИНН', 'woocommerce'),
    ];
    return $fields;
});

3. Валидация нового поля

Чтобы проверить корректность введенных данных в пользовательском поле, используйте хук woocommerce_checkout_process:

add_action('woocommerce_checkout_process', function() {
    if (empty($_POST['billing_inn']) || !preg_match('/^\d{10,12}$/', $_POST['billing_inn'])) {
        wc_add_notice(__('Пожалуйста, введите корректный ИНН (10 или 12 цифр).', 'woocommerce'), 'error');
    }
});

4. Сохранение значения поля

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

add_action('woocommerce_checkout_update_order_meta', function($order_id) {
    if (!empty($_POST['billing_inn'])) {
        update_post_meta($order_id, '_billing_inn', sanitize_text_field($_POST['billing_inn']));
    }
});

5. Отображение поля в админке и письмах

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

add_action('woocommerce_admin_order_data_after_billing_address', function($order){
    $inn = get_post_meta($order->get_id(), '_billing_inn', true);
    if ($inn) {
        echo '<p><strong>' . __('ИНН', 'woocommerce') . ':</strong> ' . esc_html($inn) . '</p>';
    }
});

add_filter('woocommerce_email_order_meta_fields', function($fields) {
    $fields['billing_inn'] = [
        'label' => __('ИНН'),
        'value' => function($order) {
            return get_post_meta($order->get_id(), '_billing_inn', true);
        },
    ];
    return $fields;
});

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

  • Откройте страницу оформления заказа и убедитесь, что поле ИНН отображается и имеет правильный label и placeholder.
  • Попробуйте оформить заказ без заполнения поля или с неправильным форматом — должна появиться ошибка.
  • Оформите заказ с валидным ИНН, затем проверьте в админке WooCommerce в деталях заказа появившееся поле.
  • Убедитесь, что поле отображается в email-уведомлениях о заказе.

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

  • Поле не отображается на странице оформления заказа
    Проверьте, что хук woocommerce_checkout_fields используется правильно и что ваш код подключен (functions.php или сниппет активен).
  • Валидация не срабатывает
    Убедитесь, что используете woocommerce_checkout_process и что имя $_POST совпадает с ключом поля.
  • Значение не сохраняется в заказе
    Проверьте, что используете woocommerce_checkout_update_order_meta и что sanitize-функция применяется к входящим данным.
  • Кастомное поле не видно в админке
    Проверьте, что используете правильный хук woocommerce_admin_order_data_after_billing_address и что мета-ключ совпадает.

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

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

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

МетодПлюсыМинусыКогда использовать
Код (фильтр woocommerce_checkout_fields)Полный контроль, без плагинов, быстрая загрузкаТребует навыков программирования, риск ошибокНебольшие изменения, кастомные поля
Плагины (например, Checkout Field Editor)Простота, визуальный редактор, больше функцийНагрузка на сайт, возможные конфликтыКомплексные формы без навыков кода
Как создать динамический маркетинговый календарь в WordPress
13.02.2026
Использование хуков WooCommerce для автоматического изменения метаданных заказа
04.06.2026
Как успешно проверить и исправить ошибки в кастомных полях оформления заказа WooCommerce
01.07.2026
Как создать автоматическую оценку контента в WordPress
08.01.2026
Как использовать хуки WooCommerce для кастомизации поля оплаты
14.05.2026