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

|

Задача: почему и когда нужно автоматизировать обновление цен в WooCommerce

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

Диагностика: как понять, что текущий способ обновления цен неэффективен

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

1. Создаем пользовательскую функцию для обновления цен

В файле functions.php вашей темы или в кастомном плагине добавляем функцию, которая будет обновлять цены товаров. В примере ниже цены обновляются для всех товаров, умножая текущую цену на коэффициент из параметра.

function wpb_update_product_prices() {
    $multiplier = 1.1; // Например, увеличить цены на 10%
    $args = [
        'post_type' => 'product',
        'posts_per_page' => -1,
        'post_status' => 'publish',
        'fields' => 'ids'
    ];
    $products = get_posts($args);
    foreach ($products as $product_id) {
        $product = wc_get_product($product_id);
        if ($product) {
            $regular_price = $product->get_regular_price();
            if ($regular_price) {
                $new_price = round(floatval($regular_price) * $multiplier, 2);
                $product->set_regular_price($new_price);
                $product->save();
            }
        }
    }
}

2. Регистрируем событие WP-Cron для запуска обновления по расписанию

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

add_action('wpb_daily_price_update_event', 'wpb_update_product_prices');

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

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

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

add_action('admin_init', function() {
    if (isset($_GET['run_price_update']) && current_user_can('manage_options')) {
        wpb_update_product_prices();
        wp_die('Цены обновлены');
    }
});

После добавления этого кода, перейдите в админку по адресу https://ваш-сайт/wp-admin/?run_price_update=1 для запуска обновления вручную.

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

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

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

Сравнение вариантов обновления цен: код vs плагины

ВариантПлюсыМинусы
Код на PHP с WP-CronПолный контроль, бесплатный, гибкийНужны знания PHP, риски ошибок, требует тестирования
Плагины (например, WooCommerce Bulk Editor)Простота использования, готовые интерфейсыМогут быть платными, ограниченная кастомизация
Интеграция с внешним ERP/CRMАвтоматизация с учетом бизнес-процессовСложная настройка, требует API и поддержки
Как создать собственный виджет WordPress с примерами кода
04.11.2025
Как использовать REST API в WordPress для бизнес-проектов: примеры и подробное руководство
03.12.2025
Автоматическое создание категорий и подкатегорий в WordPress с помощью кода
06.01.2026
Как удалить зависимости плагинов в WordPress для оптимизации скорости
06.12.2025
Как автоматизировать создание и удаление пользовательских ролей в WordPress с примерами кода
19.02.2026
×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙