Почему нужно менять стандартный формат названия товара в WooCommerce
По умолчанию WooCommerce при отображении товаров в заказе использует название из поля post_title товара. Это бывает неудобно, если вы хотите добавить к названию дополнительные данные, например, артикул, бренд или параметры вариаций, чтобы упростить обработку заказов или интеграцию с внешними системами.
Изменить формат названия в заказе позволяет гибко настроить вывод информации, улучшить читаемость и автоматизировать процессы.
Диагностика текущего формата названий товаров в заказах
Для начала нужно понять, как именно выводятся названия товаров в заказах на вашем сайте. Основные места — это:
- Страница Мои заказы в личном кабинете пользователя;
- Письма с подтверждением заказа;
- Админ-панель WooCommerce — страница редактирования заказа;
- Экспорт заказов, если он настроен.
Проверьте, что именно вас не устраивает в текущем названии. Например, не хватает артикула или специфических характеристик вариаций.
Пошаговое решение: изменение названия товара в заказе с помощью фильтра
WooCommerce для вывода названия товара в заказе использует метод get_name() объекта WC_Order_Item_Product. Чтобы изменить формат вывода, можно подключиться к фильтру woocommerce_order_item_name.
Пример кода для добавления артикула товара к названию в заказе:
add_filter('woocommerce_order_item_name', 'custom_order_item_name_with_sku', 10, 3);
function custom_order_item_name_with_sku($item_name, $item, $is_visible) {
if (is_admin()) return $item_name; // избегаем в админке
$product = $item->get_product();
if (!$product) return $item_name;
$sku = $product->get_sku();
if ($sku) {
$item_name .= ' (Артикул: ' . $sku . ')';
}
return $item_name;
}
Этот код добавит артикул в скобках после названия товара в письмах и на страницах заказов.
Расширение: добавление параметров вариаций к названию
Если товар вариативный, полезно добавить параметры вариаций:
add_filter('woocommerce_order_item_name', 'custom_order_item_name_with_variation_attributes', 20, 3);
function custom_order_item_name_with_variation_attributes($item_name, $item, $is_visible) {
$product = $item->get_product();
if (!$product) return $item_name;
if ($product->is_type('variation')) {
$variation_data = wc_get_formatted_cart_item_data($item->get_meta_data(), true);
if ($variation_data) {
$item_name .= ' ' . $variation_data;
}
}
return $item_name;
}
Так вы получите более подробное название с характеристиками вариаций.
Как проверить, что изменения работают
- Оформите тестовый заказ с товаром, у которого есть артикул и/или вариации.
- Посмотрите название товара в письме о новом заказе.
- Перейдите в личный кабинет пользователя и откройте страницу заказа — убедитесь, что название отображается с добавленными данными.
- Проверьте страницу редактирования заказа в админке — название товара в списке товаров не должно измениться (за счет проверки
is_admin()в коде).
Частые ошибки и как их исправить
- Название не меняется в письмах или на фронтенде: возможно, фильтр подключен с низким приоритетом или код не загружается. Проверьте, что код добавлен в functions.php вашей темы или в плагине и что нет синтаксических ошибок.
- Ошибка при получении продукта из $item: убедитесь, что используете метод
$item->get_product(), а не обращаетесь напрямую к массиву. - Изменения появляются в админке и ломают интерфейс: добавьте условие
if (is_admin()) return $item_name;в начале функции, чтобы избежать изменения в админке. - Проблемы с кодировкой или спецсимволами: используйте функции WordPress для экранирования вывода, например
esc_html(), если выводите название вне контекста WooCommerce.
Практические советы по производительности и безопасности
- Для оптимизации не делайте тяжелых запросов или сложных вычислений в фильтре, так как он вызывается много раз при загрузке страницы заказа и писем.
- Избегайте использования глобальных переменных и прямых SQL-запросов внутри фильтра.
- Пишите код в дочерней теме или отдельном плагине, чтобы избежать потери при обновлении.
- Проверяйте, что добавляемые данные безопасны — если берете значения из пользовательских полей или метаданных, обязательно фильтруйте и экранируйте их.
Сравнение вариантов изменения названия товара в заказе
| Метод | Описание | Плюсы | Минусы |
|---|---|---|---|
Фильтр woocommerce_order_item_name |
Изменение названия через PHP-фильтр | Гибко, не требует плагинов, быстро | Требует навыков программирования, может конфликтовать с другими фильтрами |
| Плагины для кастомизации WooCommerce | Использование готового плагина для изменения названий | Простота настройки, поддержка, расширенные опции | Может замедлять сайт, не всегда подходит под конкретные задачи |
| Редактирование шаблонов WooCommerce | Изменение PHP-шаблонов вывода заказа | Полный контроль над выводом | Сложно поддерживать, ломается при обновлениях, требует навыков |