Зачем автоматизировать создание SKU в WooCommerce?
SKU (Stock Keeping Unit) — уникальный идентификатор товара, который помогает управлять запасами и упрощает интеграцию с внешними системами. В WooCommerce SKU нужно вводить вручную, что приводит к ошибкам и дублированию. Автоматизация генерации SKU устраняет эти проблемы и экономит время при массовом добавлении товаров.
Диагностика проблемы с SKU в WooCommerce
Частые проблемы с SKU:
- Повторяющиеся SKU из-за копирования товаров.
- Отсутствие SKU у новых товаров.
- Неправильный формат SKU, неудобный для учета.
Проверить SKU товаров можно в панели WordPress в разделе Товары, добавив столбец SKU через настройки экрана.
Пошаговое решение: как автоматически создавать уникальные SKU при сохранении товара
1. Добавляем код в functions.php активной темы или создаем небольшой плагин
add_action('save_post_product', 'generate_unique_sku_for_product', 10, 3);
function generate_unique_sku_for_product($post_ID, $post, $update) {
// Проверяем, что это не автосохранение
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
// Получаем объект продукта
$product = wc_get_product($post_ID);
if (!$product) return;
// Если SKU уже есть, ничего не делаем
if ($product->get_sku()) return;
// Генерируем уникальный SKU
$prefix = 'SKU'; // Можно заменить на свой префикс
$unique_id = strtoupper(wp_generate_password(6, false, false)); // 6 символов A-Z
$new_sku = $prefix . '-' . $unique_id;
// Проверяем на уникальность SKU
while (wc_get_product_id_by_sku($new_sku)) {
$unique_id = strtoupper(wp_generate_password(6, false, false));
$new_sku = $prefix . '-' . $unique_id;
}
// Устанавливаем SKU и сохраняем
$product->set_sku($new_sku);
$product->save();
}2. Тестируем добавление нового товара
Создайте новый товар, не указывая SKU. При сохранении товара скрипт автоматически добавит уникальный SKU формата SKU-XXXXXX.
Проверка результата
- Откройте список товаров в админке WooCommerce.
- Добавьте колонку SKU через «Настройки экрана».
- Убедитесь, что у новых товаров есть уникальный SKU.
- Попробуйте создать несколько товаров подряд — SKU должны быть уникальными.
Частые ошибки при автоматическом создании SKU и как их исправить
- SKU не сохраняется после добавления кода: проверьте, что хук
save_post_productподключен правильно и код не конфликтует с другими плагинами. - Дублирование SKU: возможно, у вас есть плагин, который тоже генерирует SKU. Отключите его или добавьте логику проверки уникальности, как в примере.
- Ошибка при сохранении товара: проверьте, что функция
wc_get_productвозвращает объект и нет ошибок PHP.
Практические советы по производительности и безопасности
- Используйте кеширование вызова
wc_get_product_id_by_sku, если создаёте много товаров за раз. - Не запускайте код на автосохранениях и ревизиях, чтобы избежать лишних запросов.
- Используйте префиксы SKU, соответствующие вашей системе учёта, чтобы облегчить поиск и фильтрацию.
Сравнение вариантов автоматизации SKU
| Метод | Плюсы | Минусы |
|---|---|---|
| Плагин авто-генерации SKU | Простота установки, часто есть настройки формата | Может замедлять сайт, ограниченная кастомизация |
| Собственный код (пример выше) | Гибкость, минимальное влияние на производительность | Нужно разбираться в коде, поддержка на вас |
| Ручной ввод SKU | Полный контроль над SKU | Большой риск ошибок и дубликатов, затратно по времени |