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

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

Дублирование артикулов (SKU) в WooCommerce приводит к проблемам с учетом товаров, интеграциями и может вызвать ошибки при экспорте или синхронизации с внешними системами. Часто проблема проявляется при импорте большого количества товаров или при ручном добавлении, когда SKU не проверяется на уникальность.

Чтобы диагностировать дублирование, используйте SQL-запросы для поиска одинаковых значений в метаполе _sku, либо плагины для аудита товаров.

SQL-запрос для поиска дублирующихся SKU

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

Этот запрос покажет все SKU, которые встречаются более одного раза. Если запрос вернул данные, значит дубли есть, и их нужно исправлять.

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

Шаг 1. Создайте резервную копию базы данных

Перед изменениями обязательно сделайте бэкап базы данных, чтобы избежать потери данных.

Шаг 2. Экспортируйте список товаров с дублирующимися SKU

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

Шаг 3. Автоматический скрипт для поиска и очистки дубликатов SKU

Добавьте следующий PHP-скрипт в файл functions.php вашей темы или в отдельный плагин для быстрого выявления и очистки дублирующих SKU (примеры ниже не удаляют товары, а обнуляют SKU у дублей, кроме первого найденного):

function fix_duplicate_woocommerce_skus() {
    global $wpdb;
    $meta_key = '_sku';

    $duplicates = $wpdb->get_results(
        "SELECT meta_value AS sku, GROUP_CONCAT(post_id ORDER BY post_id) AS post_ids, COUNT(*) AS count " .
        "FROM {$wpdb->postmeta} WHERE meta_key = %s AND meta_value != '' " .
        "GROUP BY meta_value HAVING count > 1",
        ARRAY_A,
        $meta_key
    );

    if (empty($duplicates)) {
        error_log('No duplicate SKUs found');
        return;
    }

    foreach ($duplicates as $dup) {
        $post_ids = explode(',', $dup['post_ids']);
        // Оставляем SKU только у первого товара
        $keep = array_shift($post_ids);
        foreach ($post_ids as $post_id) {
            // Удаляем SKU у остальных
            delete_post_meta($post_id, $meta_key);
            error_log("Removed SKU '{$dup['sku']}' from product ID {$post_id}");
        }
    }
}
// Запустите один раз вручную вызвав fix_duplicate_woocommerce_skus();

Шаг 4. Альтернативный вариант — исправление вручную через админку

Если дубликатов немного, откройте каждый товар с повторяющимся SKU и измените или очистите поле SKU в настройках продукта.

Проверка результата после исправления дублирующихся SKU

Повторите SQL-запрос из раздела диагностики. Если он не вернул ни одной записи, значит все дубли удалены.

Также проверьте в WooCommerce > Товары, что в списке продуктов не осталось одинаковых SKU.

Частые ошибки при работе с SKU в WooCommerce и как их исправить

  • Ошибка: SKU пустой или отсутствует — товар не будет уникально идентифицирован.
    Решение: Всегда указывайте уникальный SKU, даже если он генерируется автоматически.
  • Ошибка: Не учитывается регистр символов (SKU ABC и abc считаются разными).
    Решение: При поиске дубликатов используйте сравнение без учета регистра или преобразуйте SKU к нижнему регистру для стандартизации.
  • Ошибка: После импорта SKU дублируются из-за отсутствия проверки.
    Решение: Используйте проверку уникальности SKU в процессе импорта, например, с помощью плагина WP All Import с соответствующими правилами.

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

  • Не храните SKU в пользовательских полях, отличных от стандартного _sku, чтобы WooCommerce корректно обрабатывал данные.
  • При больших каталогах товаров используйте индексирование метаполей SKU в базе данных для ускорения запросов.
  • Ограничьте права на редактирование SKU только администраторам или ответственным за каталог, чтобы избежать случайных дублей.
  • После исправления дубликатов очистите кэш сайта и кэш плагинов, чтобы изменения отобразились корректно.

Сравнение вариантов решения дублирующихся SKU

МетодОписаниеПлюсыМинусы
SQL-запрос + ручная правкаПоиск дубликатов через базу и исправление в админкеПростой, не требует кодаМедленно при большом количестве товаров
Автоматический PHP-скриптСкрипт удаляет SKU у дублей автоматическиБыстро и эффективноТребует базовых навыков программирования, риск удаления данных при ошибках
Плагины импорта с проверкойИспользование WP All Import или аналогов с настройкой уникальностиАвтоматизация при импортеПлатные решения, сложность настройки
Как использовать REST API в WordPress для создания страницы настроек
22.11.2025
Как создать автоматический импорт контента в WordPress с помощью WP REST API и плагинов
05.02.2026
Как избежать ошибок PHP в WordPress при использовании плагинов
28.01.2026
Как экспортировать и импортировать настройки WooCommerce с помощью кода
03.05.2026
Как добавить автоматическое удаление старых комментариев в WordPress
14.03.2026