WooCommerce: как изменить название и описание товара после покупки в GeneratePress

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

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

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

Как работает хранение данных товара в заказе WooCommerce

При оформлении заказа WooCommerce копирует основные данные товара (название, цена, описание) в объект WC_Order_Item_Product. После этого любые изменения в каталоге не влияют на данные уже созданных заказов.

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

Пошаговое решение: изменение названия и описания товара в заказе

Шаг 1. Создать фильтр для изменения названия товара в заказе

Используем фильтр 'woocommerce_order_item_name', который позволяет модифицировать название товара в заказе.

add_filter('woocommerce_order_item_name', 'custom_order_item_name', 10, 3);
function custom_order_item_name($item_name, $item, $is_visible) {
    // Получаем ID товара
    $product_id = $item->get_product_id();
    // Получаем ID заказа
    $order_id = $item->get_order_id();

    // Добавляем постфикс, например, статус заказа
    $order = wc_get_order($order_id);
    if ($order && $order->has_status('completed')) {
        $item_name .= ' (Завершён)';
    }
    return $item_name;
}

Шаг 2. Изменение описания товара в деталях заказа

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

Можно добавить дополнительный блок с описанием через хук 'woocommerce_order_item_meta_end':

add_action('woocommerce_order_item_meta_end', 'custom_order_item_description', 10, 3);
function custom_order_item_description($item_id, $item, $order) {
    $product = $item->get_product();
    if (!$product) return;

    // Получаем описание товара
    $description = $product->get_short_description(); // либо get_description()

    // Модифицируем описание, например добавляем индивидуальные детали
    if ($order->has_status('completed')) {
        $description .= ' \nСпасибо за покупку! Ваш заказ обработан.';
    }

    echo '<p class="custom-product-description">' . nl2br(esc_html($description)) . '</p>';
}

Шаг 3. Добавление стилей для описания

Для корректного отображения добавляем CSS в файл стилей темы или через Customizer:

.custom-product-description {
    font-size: 0.9em;
    color: #555;
    margin-top: 5px;
}

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

  • Оформите заказ с тестовым товаром;
  • Перейдите в Личный кабинет → Мои заказы → Просмотр заказа;
  • Проверьте, что название товара дополнено (например, «(Завершён)» при статусе completed);
  • В описании товара отображается дополнительный текст;
  • Проверьте отправку письма с деталями заказа — название должно изменяться, описание при необходимости можно добавить через шаблоны email.

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

  • Изменения не отображаются: очистите кэш сайта и браузера, убедитесь, что фильтры подключены в functions.php дочерней темы или в плагине, а не в родительской теме, которая может обновляться.
  • Описание не выводится: по умолчанию WooCommerce не показывает описание товара в заказах, нужно добавить вывод вручную через хук woocommerce_order_item_meta_end.
  • Фильтр применяется везде: если нужно менять название только в личном кабинете, добавьте проверку на контекст, например, if (is_account_page()) { ... }.

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

  • Не выполняйте тяжелых запросов или внешних API в фильтрах вывода заказа — это замедлит страницу;
  • Экранируйте все выводимые данные через esc_html() или esc_attr() для безопасности;
  • Для сложных изменений лучше использовать дочернюю тему или отдельный плагин, чтобы не потерять правки при обновлении GeneratePress и WooCommerce;
  • Если нужно добавить данные в email, рекомендуется создавать переопределение шаблонов WooCommerce в вашей теме и добавлять кастомные части там.

Сравнение вариантов реализации изменения данных товара в заказе

МетодОписаниеПлюсыМинусы
Фильтр woocommerce_order_item_nameИзменение названия товара на лету при выводеЛегко подключить, не влияет на базу данныхИзменения только при выводе, не сохраняются в БД
Вывод описания через woocommerce_order_item_meta_endДобавление описания в детали заказаГибкость вывода, можно форматироватьНе изменяет данные товара, только визуальное отображение
Редактирование данных в БД после покупкиПрямое изменение данных заказа в базеПостоянные изменения, видны во всех местахРиск сломать данные, требует аккуратности, сложно поддерживать
WooCommerce: как отключить комментарии и оценки на странице товара в GeneratePress
14.05.2026
Как создать автоматические отзывы в GeneratePress с помощью плагинов
02.01.2026
Автоматическое удаление товара из корзины WooCommerce после оплаты в GeneratePress
25.04.2026
Как создать динамические колонтитулы в GeneratePress на WordPress
14.02.2026
Как добавить динамические заголовки H1 в GeneratePress для улучшения SEO
04.04.2026