Проблема: необходимость массового обновления названий товаров при импорте CSV в WooCommerce
При импорте товаров через стандартный инструмент WooCommerce CSV Importer часто возникает задача автоматического изменения названий товаров (например, добавление префикса, суффикса или форматирование), чтобы избежать дублирования или повысить читаемость. Стандартного функционала для массовой обработки названий в WooCommerce нет, и вручную редактировать CSV неудобно и долго.
Диагностика: как проверить, что названия товаров не соответствуют требованиям
- Откройте CSV файл в любом редакторе (Excel, LibreOffice, VS Code).
- Проверьте столбец
nameилиpost_titleна наличие нежелательных символов, отсутствие нужных префиксов или форматирования. - Если импорт уже выполнен, проверьте товары в админке WooCommerce — перейдите в «Товары» и оцените названия.
- Используйте SQL-запрос для поиска похожих или дублирующихся названий:
SELECT post_title, COUNT(*) FROM wp_posts WHERE post_type = 'product' GROUP BY post_title HAVING COUNT(*) > 1;
Пошаговое решение: как автоматически менять названия товаров при импорте CSV
1. Используем хук woocommerce_product_import_inserted_product_object
Этот хук вызывается после создания или обновления товара при импорте и позволяет внести изменения в объект товара перед сохранением.
2. Пример кода для добавления префикса «NEW: » к названию товара
add_action('woocommerce_product_import_inserted_product_object', 'wpconsult_modify_product_title_on_import', 10, 1);
function wpconsult_modify_product_title_on_import($product) {
$title = $product->get_name();
if (strpos($title, 'NEW: ') !== 0) {
$new_title = 'NEW: ' . $title;
$product->set_name($new_title);
}
return $product;
}3. Пример более сложного форматирования: замена пробелов на тире и перевод в верхний регистр
add_action('woocommerce_product_import_inserted_product_object', 'wpconsult_format_product_title_on_import', 10, 1);
function wpconsult_format_product_title_on_import($product) {
$title = $product->get_name();
$formatted_title = strtoupper(str_replace(' ', '-', $title));
$product->set_name($formatted_title);
return $product;
}4. Добавление суффикса с текущей датой
add_action('woocommerce_product_import_inserted_product_object', 'wpconsult_add_date_suffix_to_title', 10, 1);
function wpconsult_add_date_suffix_to_title($product) {
$title = $product->get_name();
$date_suffix = ' (' . date('Y-m-d') . ')';
if (strpos($title, $date_suffix) === false) {
$product->set_name($title . $date_suffix);
}
return $product;
}Проверка результата после внедрения
- Импортируйте тестовый CSV с несколькими товарами.
- Проверьте, что названия товаров в админке WooCommerce изменились согласно логике в вашем коде.
- Обновите страницу товара на сайте и убедитесь, что название выводится как ожидается.
- Для отладки можно временно добавить логирование в файл, например:
error_log('Title changed to: ' . $product->get_name());
Частые ошибки и как их исправить
- Хук не срабатывает: убедитесь, что импорт производится через штатный WooCommerce CSV Importer, а не сторонний плагин с другой логикой.
- Изменения не сохраняются: не забывайте возвращать объект
$productиз функции. - Дублирование префиксов/суффиксов: добавьте в код проверку с помощью
strpos, чтобы избежать повторного добавления. - Проблемы с кодировкой или спецсимволами: убедитесь, что CSV и сайт используют UTF-8.
Практические советы по производительности и безопасности
- Для больших импортах отключите ненужные хуки и плагины, чтобы ускорить процесс.
- Не используйте сложные вычисления внутри хука — ограничьтесь простыми строковыми операциями.
- Используйте транзиенты или кеширование, если требуется дополнительная логика, чтобы снизить нагрузку.
- Перед внесением изменений в продакшн среду тестируйте на локальном или staging-сервере.
Сравнение вариантов реализации изменения названий товаров при импорте
| Метод | Плюсы | Минусы |
|---|---|---|
| Редактирование CSV вручную перед импортом | Простота, без кода | Трудоемко, ошибки, не масштабируется |
Использование хука woocommerce_product_import_inserted_product_object |
Автоматизация, гибкость, масштабируемость | Требует навыков разработки, возможно отладка |
| Сторонние плагины для импорта с фильтрами | Готовые решения, удобный интерфейс | Платные, могут быть избыточными, зависимость от плагина |