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

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

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

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

1. Используем WP-Cron для запуска задачи

WordPress имеет встроенный планировщик задач WP-Cron, который позволяет запускать функции по расписанию. Для обновления цен нужно создать собственную функцию и привязать её к событию WP-Cron.

function wpaddons_update_product_prices() {
    // Получаем все товары, которые нужно обновить
    $args = [
        'post_type' => 'product',
        'posts_per_page' => -1,
        'post_status' => 'publish',
    ];
    $products = get_posts($args);

    foreach ($products as $product_post) {
        $product = wc_get_product($product_post->ID);
        if (!$product) continue;

        // Пример логики обновления цены: увеличить цену на 10%
        $old_price = $product->get_regular_price();
        $new_price = $old_price * 1.1;

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

// Регистрируем событие, если оно не зарегистрировано
if (!wp_next_scheduled('wpaddons_update_prices_hook')) {
    wp_schedule_event(time(), 'daily', 'wpaddons_update_prices_hook');
}

add_action('wpaddons_update_prices_hook', 'wpaddons_update_product_prices');

2. Создаем и регистрируем собственный интервал (если нужен нестандартный)

Если требуется запускать обновление, например, раз в 6 часов, добавьте кастомный интервал:

add_filter('cron_schedules', function($schedules) {
    $schedules['every_six_hours'] = [
        'interval' => 6 * 3600,
        'display' => __('Каждые 6 часов')
    ];
    return $schedules;
});

if (!wp_next_scheduled('wpaddons_update_prices_hook')) {
    wp_schedule_event(time(), 'every_six_hours', 'wpaddons_update_prices_hook');
}

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

  • Проверить наличие запланированного события: wp cron event list (через WP-CLI)
  • Добавить логирование в функцию обновления цен:
    error_log('Обновление цены для товара ID: ' . $product->get_id());
    и посмотреть error_log сервера
  • Проверить фактическое изменение цены в админке WooCommerce или на сайте
  • Вручную запустить событие через WP-CLI: wp cron event run wpaddons_update_prices_hook

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

  • Событие WP-Cron не запускается
    Причина: на сайте низкая посещаемость или отключен WP-Cron. Решение: настроить системный cron на вызов wp-cron.php или использовать плагин «WP Crontrol» для управления задачами.
  • Цены не обновляются
    Причина: неправильное получение или обновление товаров. Проверьте, что wc_get_product() возвращает объект, и вызывается save() после обновления цены.
  • Ошибки в логах
    Причина: PHP ошибки в функции. Используйте отладчик или error_log для диагностики.

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

  • Добавляйте в функцию проверки прав пользователя, если запускаете вручную.
  • Используйте пагинацию при большом количестве товаров, чтобы избежать превышения лимитов памяти и времени выполнения.
  • Кэшируйте результаты, если используете сложные запросы для отбора товаров.
  • Проверяйте, что цена не становится отрицательной или некорректной после обновления.

Сравнение вариантов автоматизации обновления цен

МетодПреимуществаНедостаткиРекомендации
WP-Cron + пользовательская функцияПолный контроль, без сторонних плагиновЗависит от посещаемости сайта, требует навыков PHPПодходит для разработчиков, которые хотят кастомное решение
Плагины для массового обновления ценПростота настройки, GUIМенее гибкие, могут быть платнымиХорошо для пользователей без навыков программирования
Внешние скрипты и APIАвтоматизация из внешних систем, гибкостьСложность настройки, требует защиты APIИспользуется для интеграций с ERP и CRM
WooCommerce: Автоматическое изменение стоимости товаров с точной границей и проверкой условий
18.05.2026
Удаление неиспользуемых мета данных в WordPress и оптимизация базы данных
21.12.2025
Автоматическое изменение стоимости товаров в WooCommerce при определённых условиях
21.04.2026
Как создать автоматический импорт продуктов в WooCommerce
15.04.2026
Оптимизация загрузки библиотек в WordPress: уменьшение веса и ускорение сайта
18.11.2025