WooCommerce: автоматическое изменение стоимости и наличия товаров по расписанию

Диагностика проблемы: зачем нужно менять цены и наличие товаров автоматически

В интернет-магазинах на WooCommerce часто возникает задача динамического обновления цен и наличия товаров без ручного вмешательства. Это актуально для распродаж, акций, сезонных изменений или синхронизации с внешними системами. Если это делать вручную, можно допустить ошибки или не успеть вовремя.

Проверить необходимость автоматизации можно, оценив следующие признаки:

  • Частое изменение цен по расписанию (например, скидки по будним дням).
  • Обновление остатков товаров раз в день или несколько раз в неделю.
  • Наличие большого каталога, где вручную обновлять данные неудобно.

Пошаговое решение: как задать автоматическое обновление цены и наличия товаров в WooCommerce

1. Создаем функцию для изменения цены и наличия товара

Добавим в functions.php вашей темы или в кастомный плагин следующий код. Он обновит цену и наличие заданного товара по ID:

function wprobot_update_product_price_and_stock($product_id, $new_price, $new_stock) {
    $product = wc_get_product($product_id);
    if (!$product) {
        return false; // Товар не найден
    }

    // Обновляем цену
    $product->set_regular_price($new_price);
    $product->set_price($new_price);

    // Обновляем наличие
    $product->set_stock_quantity($new_stock);
    $product->set_stock_status($new_stock > 0 ? 'instock' : 'outofstock');

    $product->save();
    return true;
}

2. Запускаем обновление по расписанию с помощью WP-Cron

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

if (!wp_next_scheduled('wprobot_daily_product_update')) {
    wp_schedule_event(strtotime('03:00:00'), 'daily', 'wprobot_daily_product_update');
}

add_action('wprobot_daily_product_update', 'wprobot_handle_daily_update');

function wprobot_handle_daily_update() {
    // Пример - обновим 3 товара
    $products_to_update = [
        ['id' => 123, 'price' => 999, 'stock' => 10],
        ['id' => 124, 'price' => 499, 'stock' => 0],
        ['id' => 125, 'price' => 1299, 'stock' => 5],
    ];

    foreach ($products_to_update as $item) {
        wprobot_update_product_price_and_stock($item['id'], $item['price'], $item['stock']);
    }
}

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

Чтобы убедиться, что обновление сработало:

  • Перейдите в админку WooCommerce, откройте редактирование товара и убедитесь, что цена и количество на складе изменились согласно расписанию.
  • Включите логирование вызовов WP-Cron с помощью плагина WP Crontrol или добавьте error_log в функцию обновления:
error_log('Обновлен товар ID ' . $product_id . ': цена=' . $new_price . ', остаток=' . $new_stock);

Логи можно посмотреть в файле debug.log при включенном WP_DEBUG_LOG.

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

  • WP-Cron не срабатывает: убедитесь, что на сервере посещают сайт или настройте системный cron для вызова wp-cron.php. Проверьте наличие задач через плагин WP Crontrol.
  • Товар не найден: проверьте правильность ID товара, он должен существовать и быть опубликован.
  • Обновления не сохраняются: проверьте права файлов и версию WooCommerce, а также совместимость темы/плагинов.
  • Цена или наличие не обновляются: убедитесь, что используете методы set_regular_price и set_stock_quantity корректно и вызываете save().

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

  • Ограничьте количество обновляемых товаров за один запуск, чтобы не нагружать базу.
  • Используйте транзиенты или кеширование для хранения промежуточных данных при сложной логике обновления.
  • Добавьте проверку nonce и прав администратора, если планируете запускать обновления из интерфейса.
  • Для больших каталогов вынесите обновления в отдельный CLI-скрипт или используйте внешние системы с Webhook, чтобы не полагаться на WP-Cron.

Сравнение способов автоматического обновления цены и наличия товаров в WooCommerce

МетодПлюсыМинусыКогда использовать
WP-Cron с кастомным кодомГибко, без сторонних плагинов, легко кастомизироватьЗависит от посещаемости сайта, может срабатывать с задержкойСредние и мелкие магазины, когда нет большого количества товаров
Плагины для массового импорта (WP All Import, Woo Import)Удобный интерфейс, поддержка CSV/XMLМожет быть дорого, не всегда подходит для частых обновленийБольшие каталоги с периодическими обновлениями
Внешние системы + WebhookНадежно, быстро, синхронизация с ERP/CRMСложнее в настройке, требует сервера и навыков интеграцииКрупные магазины с постоянным потоком данных
Как автоматически создавать посты с изображениями в WordPress
26.02.2026
Автоматическое создание и управление купонами в WooCommerce через код
23.05.2026
Автоматическое обновление остатка и цены товаров WooCommerce через Webhook с примером кода
25.04.2026
Как создать собственный виджет в WordPress с примерами кода
21.11.2025
Автоматическое создание товаров WooCommerce через CSV импорт: подробное руководство
17.06.2026