Как добавить уникальные поля для продажи товаров в WooCommerce

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

Почему нужны уникальные поля для товаров WooCommerce

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

  • Нестандартные характеристики товара (например, номер серии, дата изготовления);
  • Дополнительные опции, влияющие на цену или состав заказа;
  • Поля для сбора информации от покупателя (например, гравировка, персонализация);
  • Внутренние заметки или метки, видимые только администратору.

Уникальные поля позволяют гибко настраивать карточку товара и сбор информации, что улучшает опыт пользователя и упрощает работу с заказами.

Добавление уникальных полей программно

Добавление поля в админке товара

Чтобы добавить уникальное текстовое поле на страницу редактирования товара в админке WooCommerce, используем хук woocommerce_product_options_general_product_data. Например, создадим поле «Номер серии».

function wpboot_add_custom_general_fields() {
    woocommerce_wp_text_input( array(
        'id' => '_wpboot_serial_number',
        'label' => __('Номер серии', 'wpboot'),
        'desc_tip' => true,
        'description' => __('Введите номер серии товара.', 'wpboot'),
        'type' => 'text',
    ) );
}
add_action('woocommerce_product_options_general_product_data', 'wpboot_add_custom_general_fields');

Этот код добавит поле в блок общих настроек товара.

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

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

function wpboot_save_custom_general_fields($post_id) {
    $serial_number = isset($_POST['_wpboot_serial_number']) ? sanitize_text_field($_POST['_wpboot_serial_number']) : '';
    update_post_meta($post_id, '_wpboot_serial_number', $serial_number);
}
add_action('woocommerce_process_product_meta', 'wpboot_save_custom_general_fields');

Вывод поля на странице товара

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

function wpboot_display_serial_number() {
    global $product;
    $serial_number = get_post_meta($product->get_id(), '_wpboot_serial_number', true);
    if ($serial_number) {
        echo '<p class="wpboot-serial-number"><strong>Номер серии:</strong> ' . esc_html($serial_number) . '</p>';
    }
}
add_action('woocommerce_single_product_summary', 'wpboot_display_serial_number', 25);

Этот код выведет номер серии после описания товара.

Использование плагинов для добавления уникальных полей

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

Advanced Custom Fields (ACF)

ACF — универсальный плагин для создания дополнительных полей в WordPress. Можно создать группу полей и привязать её к типу записи «product». Плагин позволяет создавать поля разных типов — текст, выбор, дата, изображение и т.д.

Преимущества ACF:

  • Простой интерфейс настройки;
  • Поддержка повторяющихся блоков;
  • Возможность вывести поля в шаблонах через PHP код, например:
$serial_number = get_field('serial_number', $product_id);
echo 'Номер серии: ' . esc_html($serial_number);

WooCommerce Custom Fields

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

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

Отображение и использование уникальных полей в заказах

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

Добавление данных в заказ

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

function wpboot_add_cart_item_data($cart_item_data, $product_id) {
    $serial_number = get_post_meta($product_id, '_wpboot_serial_number', true);
    if ($serial_number) {
        $cart_item_data['wpboot_serial_number'] = $serial_number;
    }
    return $cart_item_data;
}
add_filter('woocommerce_add_cart_item_data', 'wpboot_add_cart_item_data', 10, 2);

Отображение в корзине и заказе

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

function wpboot_display_cart_item_serial_number($item_data, $cart_item) {
    if (isset($cart_item['wpboot_serial_number'])) {
        $item_data[] = array(
            'key' => __('Номер серии', 'wpboot'),
            'value' => $cart_item['wpboot_serial_number'],
        );
    }
    return $item_data;
}
add_filter('woocommerce_get_item_data', 'wpboot_display_cart_item_serial_number', 10, 2);

Этот код выведет номер серии рядом с товаром в корзине и на странице оформления заказа.

Сохранение в мета заказа

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

function wpboot_add_order_item_meta($item_id, $values) {
    if (!empty($values['wpboot_serial_number'])) {
        wc_add_order_item_meta($item_id, 'Номер серии', $values['wpboot_serial_number']);
    }
}
add_action('woocommerce_add_order_item_meta', 'wpboot_add_order_item_meta', 10, 2);

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

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

  • Использовать функции санитайзинга, например, sanitize_text_field для текстовых данных;
  • Экранировать вывод через esc_html или аналогичные функции, чтобы избежать XSS;
  • Не перегружать страницу товара большим количеством полей — учитывайте UX;
  • Оптимизировать запросы к базе, использовать кэширование, если поля часто используются.

Заключение

Добавление уникальных полей в WooCommerce — мощный инструмент для кастомизации интернет-магазина под ваши нужды. Можно сделать это как вручную через код, так и с помощью проверенных плагинов. Главное — продумать, какие данные действительно нужны, и грамотно интегрировать их в процесс покупки и управления заказами.

Если хотите использовать готовые решения с расширенными возможностями, рекомендуем плагин WooCommerce Custom Fields на wpshop.ru. Он позволит быстро добавить нужные поля и гибко настроить их отображение без программирования.

Как создать адаптивный слайдер в WordPress с нуля
22.11.2025
Оптимизация базы данных WordPress: практические советы и примеры кода
30.11.2025
Как создать свой плагин WordPress с настройками
06.11.2025
Автоматическое изменение стоимости товара в WooCommerce по акции с помощью кода
20.04.2026
Как автоматизировать создание резервных копий WordPress с помощью PHP и плагинов
16.04.2026