WooCommerce: как использовать WP-Cron для автоматического изменения стоимости товаров

Диагностика задачи: зачем автоматизировать изменение цен в WooCommerce

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

Пошаговое решение: настройка WP-Cron для изменения цен товаров

1. Создаем функцию для изменения цен

Напишем функцию, которая изменит цену всех товаров, например, уменьшит цену на 10%.

function wpeditor_apply_discount_to_all_products() {
    // Получаем все ID товаров
    $args = [
        'post_type' => 'product',
        'posts_per_page' => -1,
        'fields' => 'ids',
        'post_status' => 'publish',
    ];
    $product_ids = get_posts($args);

    foreach ($product_ids as $product_id) {
        $product = wc_get_product($product_id);
        if (!$product) continue;

        $regular_price = $product->get_regular_price();
        if (!$regular_price) continue;

        // Уменьшаем цену на 10%
        $new_price = round($regular_price * 0.9, 2);

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

2. Регистрируем событие WP-Cron

Добавляем в functions.php регистрацию задачи, которая будет запускаться, например, ежедневно.

function wpeditor_schedule_daily_price_update() {
    if (!wp_next_scheduled('wpeditor_daily_price_update_event')) {
        wp_schedule_event(time(), 'daily', 'wpeditor_daily_price_update_event');
    }
}
add_action('wp', 'wpeditor_schedule_daily_price_update');

// Хук для запуска нашей функции
add_action('wpeditor_daily_price_update_event', 'wpeditor_apply_discount_to_all_products');

3. Очистка расписания при деактивации темы или плагина

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

function wpeditor_clear_scheduled_price_update() {
    $timestamp = wp_next_scheduled('wpeditor_daily_price_update_event');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'wpeditor_daily_price_update_event');
    }
}
register_deactivation_hook(__FILE__, 'wpeditor_clear_scheduled_price_update');

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

  • В админке WooCommerce проверьте цены товаров — должна появиться скидочная цена с уменьшением на 10%.
  • Проверьте журнал ошибок сервера и логи WP-Cron (можно использовать плагин WP Crontrol) для подтверждения срабатывания задачи.
  • Ручной запуск задачи через WP Crontrol подтвердит корректность функции без ожидания cron-события.

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

  • Цены не меняются: Проверьте, что функция получает товары и цены. Добавьте логирование или var_dump внутри цикла.
  • WP-Cron не запускается: На некоторых серверах cron-задания WP-Cron не срабатывают без посещения сайта. Используйте системный cron или плагин WP Crontrol.
  • Скидочная цена не отображается: Убедитесь, что шаблон темы корректно выводит sale_price. Также проверьте статус товара.
  • Проблемы с производительностью: При большом количестве товаров разбейте обновление на части с помощью offset и limit.

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

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

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

МетодПлюсыМинусыКогда использовать
WP-Cron + собственный кодМаксимальная гибкость, нет лишних плагиновНужны навыки PHP, возможны проблемы с cronДля точных кастомных условий
Плагины акций и скидокПростая настройка, готовый функционалМогут быть ресурсоёмкими, ограниченная гибкостьДля стандартных сценариев
Системный cron + WP-CLIНадежный запуск, подходит для больших сайтовТребует доступа к серверу и навыков работы с консольюПри больших объемах и необходимости точного контроля

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как создать автоматическое отправление email в WordPress с примерами кода
11.01.2026
Как удалить или изменить класс в HTML элементе WordPress без плагинов
15.01.2026
Как автоматизировать создание и обновление панорамных галерей в WordPress
12.03.2026
Как автоматизировать обновление transient в WordPress: практическое руководство
28.03.2026
Как автоматизировать создание и обновление Sitemap в WordPress
18.01.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше