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

Почему дублирование SKU в WooCommerce – проблема

SKU (артикул) – уникальный идентификатор товара, используемый для учёта и интеграций с 1С, CRM и складами. Если в вашем магазине WooCommerce появляются дублирующиеся SKU, это приводит к ошибкам в учёте, путанице при заказах и проблемам с синхронизацией данных.

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

Перед исправлением нужно убедиться, что дублирование действительно есть и определить, где именно:

  • Перейдите в админку WooCommerce – Товары → Все товары.
  • Включите отображение столбца SKU, если он не виден.
  • Отсортируйте товары по SKU и вручную проверьте повторы.
  • Для более точного анализа можно выполнить SQL-запрос через phpMyAdmin или WP-CLI:
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

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

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

2. Автоматический поиск и исправление дубликатов через WP-CLI

Если у вас есть доступ к терминалу, можно быстро получить список и исправить SKU:

wp db query "SELECT post_id, meta_value FROM wp_postmeta WHERE meta_key = '_sku' ORDER BY meta_value;" --skip-column-names > all_skus.txt

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

<?php
// Простая логика исправления дубликатов SKU
$skus = [];
$args = [
    'post_type' => 'product',
    'posts_per_page' => -1,
    'meta_key' => '_sku',
    'meta_compare' => 'EXISTS'
];
$query = new WP_Query($args);
if ($query->have_posts()) {
    while ($query->have_posts()) {
        $query->the_post();
        $id = get_the_ID();
        $sku = get_post_meta($id, '_sku', true);
        if ($sku === '') continue;
        if (isset($skus[$sku])) {
            $new_sku = $sku . '-' . ($skus[$sku] + 1);
            update_post_meta($id, '_sku', $new_sku);
            $skus[$sku]++;
        } else {
            $skus[$sku] = 0;
        }
    }
    wp_reset_postdata();
}

3. Использование плагина для контроля SKU

Если хотите избежать ошибок при добавлении товаров, можно использовать плагин Woo SKU Unique. Он блокирует дублирование SKU при создании/редактировании товара.

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

  • Повторите SQL-запрос из раздела диагностики – он должен вернуть пустой результат.
  • Попробуйте добавить новый товар с уже существующим SKU – плагин или код должен предупреждать об ошибке.
  • Проверьте интеграции с CRM/1С – ошибки повторного импорта должны исчезнуть.

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

  • Пустые SKU: По умолчанию WooCommerce разрешает пустой SKU, что допустимо, но усложняет идентификацию товаров. Рекомендуется всегда заполнять SKU.
  • Дублирование у вариаций: Вариации товаров могут наследовать SKU от родителя. Если у вариации заполнен SKU, он должен быть уникальным. Проверьте вариации через админку или SQL-запрос.
  • Неправильный формат SKU: Использование специальных символов может вызвать ошибки в интеграциях. Используйте только латиницу, цифры и дефисы.
  • Отсутствие контроля уникальности при импорте: При импорте товаров через CSV могут появиться дубликаты. Используйте плагины импорта с опцией проверки уникальности SKU.

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

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

Сравнение способов контроля уникальности SKU

МетодПлюсыМинусы
Ручная проверка и исправлениеПолный контроль, не требует установки плагиновДолго, риск пропустить ошибки
SQL-запросы и скриптыАвтоматизация, быстро для больших базТребует технических навыков, риск ошибок при обновлении
Плагины проверки уникальностиАвтоматический контроль при добавлении товаровЗависимость от плагина, возможные конфликты
Как установить лимит на размер файлов при загрузке в WordPress
12.12.2025
Как автоматизировать раскрытие и закрытие блоков в WordPress с помощью JavaScript и PHP
02.03.2026
Как автоматизировать удаление старого кеша в WordPress
30.01.2026
Как использовать WP-Cron для автоматизации обработки заказов WooCommerce
16.05.2026
Как избежать проблем с кодировкой (charset) в WordPress
01.04.2026