WooCommerce: автоматическое обновление остатков и цен из внешних источников

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

Частая задача интернет-магазинов на WooCommerce — регулярное обновление остатков и цен товаров, получаемых из внешних систем (поставщиков, ERP, CRM). Ручное изменение через админку неэффективно и рискованно. Без автоматизации возможны ошибки в наличии, неправильные цены и потеря продаж.

Проверка симптомов:

  • Данные о товарах устарели, не соответствуют фактическим запасам;
  • Цены не обновляются вовремя;
  • Поставщик присылает CSV или JSON с актуальными данными, но их не интегрируют в магазин.

Без правильного механизма автоматизации обновления данные в WooCommerce быстро устаревают.

Пошаговое решение: автоматический импорт остатков и цен из CSV с помощью WP-Cron

1. Подготовка CSV файла

Убедитесь, что файл содержит минимум 3 колонки: sku, stock_quantity, regular_price. SKU — уникальный артикул товара в WooCommerce.

2. Создание функции импорта

Добавьте в functions.php или в кастомный плагин следующий код:

function wps_update_products_from_csv() {
    $csv_url = 'https://example.com/path/to/stock_prices.csv';
    if( ( $handle = fopen($csv_url, 'r') ) !== FALSE ) {
        $header = fgetcsv($handle);
        while( ($data = fgetcsv($handle)) !== FALSE ) {
            $row = array_combine($header, $data);
            $product_id = wc_get_product_id_by_sku($row['sku']);
            if( $product_id ) {
                $product = wc_get_product($product_id);
                // Обновляем количество
                $stock = intval($row['stock_quantity']);
                $product->set_stock_quantity($stock);
                $product->set_manage_stock(true);
                // Обновляем цену
                $price = floatval($row['regular_price']);
                $product->set_regular_price($price);
                $product->save();
            }
        }
        fclose($handle);
    }
}

3. Настройка WP-Cron для запуска обновления

Добавьте хук для запуска функции раз в сутки:

add_action('wps_daily_update', 'wps_update_products_from_csv');

if( ! wp_next_scheduled('wps_daily_update') ) {
    wp_schedule_event(time(), 'daily', 'wps_daily_update');
}

4. Принудительный запуск и отладка

Для проверки запуска вручную вызовите wps_update_products_from_csv() через консоль WP-CLI или временно в коде.

Проверка результата после внедрения

  • Проверьте в админке WooCommerce товар: количество и цены должны обновиться согласно CSV.
  • Запустите WP-Cron вручную через wp cron event run wps_daily_update (WP-CLI) и проверьте логи ошибок.
  • Убедитесь, что в базе данных таблицы wp_postmeta обновились мета-значения _stock и _regular_price.

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

  • Неверный путь к CSV или ошибки доступа: убедитесь, что URL доступен и возвращает CSV в ожидаемом формате.
  • Несоответствие SKU: если SKU в CSV не совпадает с WooCommerce, товары не обновятся. Проверьте совпадения.
  • WP-Cron не запускается: хостинг может блокировать cron, проверьте запуск через WP-CLI или настройте системный cron.
  • Проблемы с правами записи: убедитесь, что PHP скрипт имеет доступ к сохранению изменений в базе.

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

  • Безопасность доступа к CSV: если файл находится на стороннем сервере, используйте HTTPS и ограничьте доступ по IP или паролю.
  • Обработка ошибок: добавьте логирование ошибок в файл, чтобы отслеживать проблемы импорта.
  • Оптимизация: если товаров много, разбивайте обновление на партии, чтобы избежать таймаутов PHP.
  • Удаление WP-Cron: на крупных магазинах лучше отключить WP-Cron и настроить системный cron для регулярных запусков.

Сравнение вариантов обновления остатков и цен

МетодПлюсыМинусыПример
Импорт CSV через WP-Cron (код)Гибкость, полная кастомизация, бесплатныйТребуется разработка, поддержка кодаПример из статьи
Плагин автоматического импортаБыстрая настройка, поддержкаПлатные, ограничены функционаломWP All Import, Product CSV Import Suite
Интеграция через API поставщикаАвтоматизация в реальном времениСложность реализации, зависит от APIКастомный модуль интеграции
Уникальный хештег для WordPress: создание и применение
09.11.2025
Как создать автоматическое удаление старых комментариев в WordPress
26.03.2026
WooCommerce: как автоматически удалять товары после продажи
22.05.2026
WooCommerce: автоматическое удаление неоплаченных заказов через код
12.07.2026
Автоматическое удаление товара из WooCommerce после продажи
20.04.2026