WooCommerce: артикул (SKU) не сохраняется при редактировании товара — как исправить

Диагностика проблемы: почему не сохраняется SKU в WooCommerce

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

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

  • Конфликты с плагинами, которые вмешиваются в сохранение метаданных товара;
  • Неправильная регистрация пользовательских типов продуктов или метаполей;
  • Ошибки в теме, которые переопределяют стандартные поля WooCommerce;
  • Ограничения базы данных или ошибки валидации SKU (например, дубликаты или запрещённые символы);
  • Использование нестандартных хуков или фильтров, блокирующих сохранение SKU.

Пошаговое решение проблемы с сохранением SKU в WooCommerce

1. Проверка базового функционала WooCommerce

Отключите все плагины, кроме WooCommerce, и переключитесь на стандартную тему (например, Storefront). Попробуйте изменить SKU и сохранить товар. Если работает — проблема в совместимости.

2. Поиск конфликтующего плагина

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

3. Проверка кода, вмешивающегося в сохранение SKU

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

add_action('save_post_product', 'custom_save_sku_correction', 10, 3);
function custom_save_sku_correction($post_id, $post, $update) {
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
    if (isset($_POST['sku'])) {
        update_post_meta($post_id, '_sku', sanitize_text_field($_POST['sku']));
    }
}

Проверьте, есть ли подобный код в вашей теме или плагинах. Иногда неправильная обработка может блокировать сохранение.

4. Проверка на дубликаты и валидацию SKU

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

5. Принудительное сохранение SKU через пользовательский код

Если стандартное сохранение не работает, можно добавить этот код в functions.php вашей темы или плагина:

add_action('woocommerce_process_product_meta', 'force_save_sku_field', 10, 1);
function force_save_sku_field($post_id) {
    if (isset($_POST['_sku'])) {
        $sku = sanitize_text_field($_POST['_sku']);
        update_post_meta($post_id, '_sku', $sku);
    }
}

Этот хук срабатывает при сохранении товара и гарантирует, что поле SKU будет обновлено.

Как проверить, что проблема решена

  • Редактируйте товар в админке WooCommerce и измените SKU на уникальное значение.
  • Нажмите «Обновить» и убедитесь, что после перезагрузки страницы SKU сохраняется в поле.
  • Проверьте в базе данных (таблица wp_postmeta) наличие актуального значения _sku для данного товара.
  • Если интегрируете с внешними системами, проверьте, что SKU передаётся корректно.

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

  • Использование дубликатов SKU. WooCommerce не даст сохранить товар с уже существующим SKU. Необходимо генерировать уникальные значения.
  • Ошибки в кастомных хукках. Некорректно написанные функции на save_post или woocommerce_process_product_meta могут блокировать запись метаданных.
  • Конфликты плагинов. Некоторые плагины для управления товарами (например, сторонние импортеры) могут перезаписывать SKU или блокировать его изменение.
  • Неправильное форматирование SKU. Использование запрещённых символов или слишком длинных строк может вызывать проблемы.

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

  • При добавлении пользовательского кода для сохранения SKU обязательно используйте sanitize_text_field() для очистки вводимых данных.
  • Следите за уникальностью SKU, чтобы избежать проблем с синхронизацией и учётом товаров.
  • Не храните SKU в нестандартных метаполях без особой необходимости, чтобы не усложнять поддержку.
  • Для массового обновления SKU используйте WP CLI или специализированные плагины с поддержкой импорта CSV с валидацией.

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

МетодОписаниеПлюсыМинусы
Отключение плагинов и смена темыДиагностика конфликтовБыстро выявляет причинуВременное решение, влияет на сайт
Добавление хука woocommerce_process_product_metaПринудительное сохранение SKU через кодГарантирует сохранение, легко кастомизируетсяТребует навыков разработки, может конфликтовать с другими хуками
Использование сторонних плагинов для управления товарамиАвтоматизация и расширенное управление SKUУдобно для больших каталоговМогут вызывать конфликты, влияют на производительность
Как отловить и исправить ошибки PHP в WordPress
01.04.2026
Как отключить автоматическое удаление старых записей через WP-Cron в WordPress
24.03.2026
Как отключить XML-RPC в WordPress для повышения безопасности
16.04.2026
Как использовать REST API WordPress для мониторинга изменений на сайте
23.12.2025
Как использовать WPMonitor для автоматического мониторинга WordPress
22.02.2026