WooCommerce: как исправить ошибку дублирования SKU при добавлении товаров

Диагностика ошибки дублирования SKU в WooCommerce

Если при добавлении или обновлении товара в WooCommerce вы получаете ошибку, связанную с дублирующимся SKU (Stock Keeping Unit), это означает, что в базе данных уже существует товар с таким же уникальным идентификатором. WooCommerce требует, чтобы каждый SKU был уникальным, иначе возникают проблемы с отслеживанием запасов и заказов.

Для диагностики ошибки:

  • Попробуйте добавить товар с тем же SKU, что и у существующего товара.
  • Если появляется сообщение SKU must be unique или похожее, это подтверждает конфликт.
  • Проверьте базу данных, выполнив SQL-запрос:
SELECT post_id, meta_value FROM wp_postmeta WHERE meta_key = '_sku' AND meta_value = 'ваш-SKU';

Где ваш-SKU — проблемный артикул. Если запрос возвращает несколько записей, значит, SKU дублируется.

Почему дублирование SKU возникает в WooCommerce

  • Импорт товаров без проверки уникальности.
  • Копирование товаров без изменения SKU.
  • Плагины или кастомный код, который не учитывает уникальность SKU.
  • Ошибки при массовом обновлении товаров.

Пошаговое решение проблемы дублирования SKU

1. Найдите и исправьте дубликаты SKU

Выполните SQL-запрос для поиска всех SKU, которые встречаются более одного раза:

SELECT meta_value, COUNT(*) as count FROM wp_postmeta WHERE meta_key = '_sku' GROUP BY meta_value HAVING count > 1;

Это покажет список всех дублирующихся SKU.

Далее можно вывести конкретные товары с этими SKU:

SELECT post_id, meta_value FROM wp_postmeta WHERE meta_key = '_sku' AND meta_value = 'проблемный-SKU';

Зайдите в админку WooCommerce и отредактируйте каждый товар, чтобы присвоить уникальный SKU.

2. Автоматически очистить дублирующиеся SKU через код

Если товаров много, можно использовать PHP-скрипт для выявления и изменения дублирующихся SKU. Пример ниже добавит суффикс к повторяющимся SKU:

function fix_duplicate_skus() {
    global $wpdb;
    $skus = $wpdb->get_results(
        "SELECT meta_value, COUNT(*) as cnt FROM {$wpdb->postmeta} WHERE meta_key = '_sku' GROUP BY meta_value HAVING cnt > 1"
    );
    foreach ($skus as $sku) {
        $duplicates = $wpdb->get_results($wpdb->prepare(
            "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key = '_sku' AND meta_value = %s",
            $sku->meta_value
        ));
        $i = 1;
        foreach ($duplicates as $dup) {
            if ($i === 1) {
                $i++;
                continue; // Оставляем первый товар без изменений
            }
            $new_sku = $sku->meta_value . '-dup' . $i;
            update_post_meta($dup->post_id, '_sku', $new_sku);
            $i++;
        }
    }
}
add_action('init', 'fix_duplicate_skus');

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

3. Настройте процесс импорта товаров с проверкой уникальности SKU

Если используете импорт CSV, обязательно проверяйте, чтобы SKU не дублировались. Многие плагины импорта (например, WP All Import) позволяют включать проверку уникальности в настройках.

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

  • Попробуйте добавить товар с ранее проблемным SKU — ошибка должна отсутствовать.
  • Выполните SQL-запрос для проверки дубликатов — их не должно быть.
  • Проверьте работу корзины и оформления заказа — все товары должны корректно отображаться по своим SKU.

Частые ошибки при устранении дублирования SKU

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

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

  • Перед массовыми изменениями сделайте резервную копию базы данных.
  • Используйте транзакции SQL при работе с большим объемом данных, чтобы избежать ошибок.
  • Для больших магазинов рекомендуем периодически проверять базу на дубликаты SKU и автоматизировать этот процесс через WP-Cron.
  • Ограничьте длину SKU (рекомендуется не более 60 символов) для совместимости с WooCommerce.

Сравнение вариантов решения проблемы дублирования SKU

МетодПлюсыМинусыПрименимость
Ручная правка SKU в админкеПростота, контрольМедленно при большом количестве товаровМаленькие и средние магазины
Использование PHP-скрипта для автоматического исправленияБыстро для большого количества товаровТребует навыков, риск ошибокСредние и крупные магазины
Настройка плагина импорта с проверкой уникальностиАвтоматизация при импортеНе исправляет уже существующие дубликатыДля магазинов с регулярным импортом
Как автоматизировать создание резервной копии WordPress
03.12.2025
Как автоматически удалять пустые термины в таксономиях WordPress
12.04.2026
Как автоматизировать удаление старых записей в WordPress с помощью WP-Cron и кастомных функций
16.04.2026
Как удалить произвольные метаключи в WordPress без вреда для SEO
18.03.2026
Как избежать конфликтов между плагинами в WordPress: практические советы и решения
21.12.2025