WooCommerce: как исправить проблему с несохранением пользовательского атрибута SKU

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

Проблема: при добавлении или редактировании товара в WooCommerce пользовательский атрибут SKU не сохраняется, хотя поле заполнено. Это может проявляться как в админке, так и при массовом импорте товаров.

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

  • SKU отображается пустым после сохранения товара;
  • Ошибка отсутствует, но данные не сохраняются;
  • Проблема появляется только для пользовательских атрибутов, а системные SKU сохраняются корректно.

Причины возникновения

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

Пошаговое решение проблемы

Шаг 1. Проверка плагинов и темы

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

Шаг 2. Правильное добавление и сохранение пользовательского SKU

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

Пример кода для сохранения пользовательского SKU:

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

И соответствующее поле в форме редактирования товара:

add_action('woocommerce_product_options_sku', 'add_custom_sku_field');
function add_custom_sku_field() {
    woocommerce_wp_text_input(
        array(
            'id' => 'custom_sku',
            'label' => __('Пользовательский SKU', 'woocommerce'),
            'desc_tip' => true,
            'description' => __('Введите уникальный артикул товара.', 'woocommerce'),
            'value' => get_post_meta(get_the_ID(), '_sku', true)
        )
    );
}

Шаг 3. Проверка прав и кеширования

  • Убедитесь, что у пользователя есть права на редактирование товаров;
  • Очистите кеш сайта и браузера;
  • Отключите любые плагины кеширования и проверьте повторно.

Проверка результата

После внесения изменений:

  • Создайте или отредактируйте товар, заполните поле пользовательского SKU;
  • Сохраните товар;
  • Проверьте в базе данных в таблице wp_postmeta наличие ключа _sku с нужным значением;
  • Проверьте отображение SKU на страницах товара на фронтенде;
  • Убедитесь, что SKU сохраняется после обновления страницы и при массовом редактировании.

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

Ошибка 1. Использование неправильного мета-ключа

WooCommerce использует именно _sku для SKU товара. Использование других ключей не даст результата. Решение — всегда использовать _sku.

Ошибка 2. Не подключен хук сохранения

Если не добавить функцию сохранения через woocommerce_process_product_meta, поле не сохранится. Проверьте, что код добавлен и выполняется.

Ошибка 3. Конфликт плагинов, изменяющих метаданные

Отключите подозрительные плагины, особенно те, что работают с товарами и метаданными. Если проблема ушла — ищите альтернативы или обновления.

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

  • Используйте sanitize_text_field() для очистки пользовательских данных перед сохранением;
  • Не храните SKU в опциях или нестандартных таблицах, чтобы не усложнять логику и не снижать производительность;
  • Проверяйте уникальность SKU, чтобы избежать конфликтов в WooCommerce;
  • Используйте WP-CLI для массовой проверки и исправления SKU при необходимости.

Сравнение вариантов решения

МетодПлюсыМинусыРекомендации
Использование стандартного мета-ключа _skuМаксимальная совместимость с WooCommerce, простотаНельзя хранить несколько SKUДля большинства случаев оптимально
Создание пользовательского атрибута SKUГибкость, можно хранить дополнительные данныеТребует дополнительной обработки и кодаИспользовать, если нужно расширенное управление
Использование плагинов для управления SKUУдобство, готовые решенияЗависимость от стороннего кода, возможны конфликтыПодходит для крупных магазинов с особенными требованиями
Как создать автоматический импорт данных из Excel в WordPress
09.01.2026
Как сделать динамические шорткоды в WordPress: подробное руководство
02.11.2025
WooCommerce: автоматическое удаление нерассмотренных заказов по времени
24.05.2026
Как добавить расширенные типы данных в WordPress
11.12.2025
Как создать автоматические обновления данных в WordPress с помощью WP-Cron
22.12.2025