WooCommerce: как исправить ошибку дублирующихся SKU товаров

Диагностика проблемы с дублирующимися SKU в WooCommerce

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

Основные признаки проблемы:

  • Ошибка «Duplicate SKU detected» при загрузке товаров через CSV или API.
  • Некорректное отображение остатков на складе.
  • Проблемы с поиском и фильтрацией товаров по SKU.

Чтобы подтвердить наличие дублирующихся SKU, выполните SQL-запрос напрямую к базе данных:

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

Если в выводе есть строки, значит SKU повторяются.

Пошаговое решение: как найти и исправить дублирующиеся SKU

1. Экспорт всех товаров с SKU

Для начала экспортируйте список всех товаров с их SKU. Это можно сделать через WooCommerce > Товары > Экспорт или с помощью плагина WP All Export.

2. Поиск дубликатов в Excel или Google Sheets

Импортируйте CSV в табличный редактор и отсортируйте по колонке SKU. Используйте условное форматирование или формулы для выделения повторяющихся значений. Например, в Excel формула для подсветки дубликатов:

=COUNTIF($B$2:$B$1000, B2)>1

3. Исправление SKU

Уникализируйте SKU товара, добавляя суффиксы или префиксы для дубликатов. Например, если SKU «ABC123» повторяется, измените второй на «ABC123-1».

4. Обновление SKU через код

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

function fix_duplicate_skus() {
    global $wpdb;
    $skus = [];
    $posts = $wpdb->get_results("SELECT post_id, meta_value FROM {$wpdb->postmeta} WHERE meta_key = '_sku'");
    foreach ($posts as $post) {
        $sku = $post->meta_value;
        if (isset($skus[$sku])) {
            $count = ++$skus[$sku];
            $new_sku = $sku . '-' . $count;
            update_post_meta($post->post_id, '_sku', $new_sku);
        } else {
            $skus[$sku] = 0;
        }
    }
}
add_action('init', 'fix_duplicate_skus');

Запустите этот код однократно, после чего удалите из functions.php или деактивируйте для предотвращения повторного выполнения.

Как проверить, что дубли устранены

После исправления SKU снова выполните SQL-запрос из раздела диагностики. Если он не возвращает строк — дубли устранены. Также проверьте в WordPress админке, что для каждого товара SKU уникален.

Дополнительно проверьте функциональность импорта и фильтров по SKU, чтобы убедиться, что ошибка не повторяется.

Частые ошибки при решении проблемы с SKU

  • Неудаление дубликатов в вариациях товаров. В WooCommerce вариации могут иметь собственный SKU, которые тоже должны быть уникальны.
  • Запуск автоматического кода без резервного копирования. Это может привести к потере данных при ошибках.
  • Игнорирование влияния плагинов импорта/синхронизации. Некоторые плагины могут автоматически создавать дубли, если не настроены правильно.
  • Обновление SKU без учета SEO и URL структуры. Изменения SKU могут повлиять на внутренние ссылки и отслеживание.

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

  • Перед изменениями сделайте полное резервное копирование базы данных.
  • Выполняйте массовые обновления SKU в нерабочее время, чтобы избежать конфликтов с посетителями и плагинами.
  • Используйте транзакции при работе с базой данных, если пишете свои скрипты, чтобы не оставить сайт в неконсистентном состоянии.
  • Для больших магазинов оптимизируйте SQL-запросы и разбивайте обновления на партии по 100–200 товаров.

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

МетодПлюсыМинусыРекомендуется для
Ручное исправление через CSV и ExcelПростой, не требует кодаТрудоемко, риск ошибок при больших объемахМагазины с небольшим количеством товаров
Автоматический скрипт на PHPБыстро, масштабируемоТребует навыков программирования, риск ошибок без бэкапаСредние и крупные магазины
Использование плагинов импорта с проверкой SKUАвтоматизация процесса, удобствоМожет не решать уже существующие дубли, платные плагиныМагазины с регулярным импортом товаров
Как защитить WordPress от bruteforce атак с помощью плагинов и кода
05.01.2026
WooCommerce: как исправить ошибку дублирующихся SKU товаров
04.05.2026
WooCommerce: как избежать ошибок с дублирующимися SKU товаров
13.05.2026
Как автоматизировать удаление постов в WordPress по срокам
19.03.2026
Как избежать проблем с сериализацией в WordPress meta полях
05.01.2026

Совсем скоро здесь откроется ресурс о вордпресс.