Как использовать фильтры для автоматического изменения заказов WooCommerce

|

Диагностика задачи: зачем менять данные заказа автоматически

В WooCommerce часто возникает необходимость автоматически модифицировать заказы после их создания: например, добавить скидку по определённым условиям, изменить статус, добавить мета-данные или изменить стоимость доставки. Ручное редактирование каждого заказа неудобно и неэффективно. Чтобы автоматизировать эти процессы, используются фильтры и хуки WooCommerce.

Основные фильтры и хуки для изменения заказа

WooCommerce предоставляет несколько ключевых хуков для вмешательства в процесс создания и обновления заказа:

Для большинства задач достаточно использовать woocommerce_checkout_create_order, чтобы внести изменения сразу после оформления.

Пример: добавление мета-данных и скидки на товар

add_action('woocommerce_checkout_create_order', 'custom_modify_order', 20, 2);
function custom_modify_order( $order, $data ) {
    // Добавляем мета-данные к заказу
    $order->update_meta_data('_custom_note', 'Проверить вручную');

    // Проходимся по позициям и уменьшаем цену на 10% для товаров категории "Распродажа"
    foreach ( $order->get_items() as $item_id => $item ) {
        $product = $item->get_product();
        if ( has_term( 'sale', 'product_cat', $product->get_id() ) ) {
            $original_price = $item->get_subtotal();
            $discounted_price = $original_price * 0.9;
            $item->set_subtotal( $discounted_price );
            $item->set_total( $discounted_price );
            $item->save();
        }
    }
}

Пошаговое решение для автоматического изменения статуса заказа

Рассмотрим кейс: автоматически переводить заказ в статус "в обработке", если сумма заказа превышает 5000 рублей.

  1. Добавьте следующий код в файл functions.php вашей темы или в плагин для пользовательских функций:
add_action('woocommerce_checkout_order_processed', 'auto_change_order_status', 10, 3);
function auto_change_order_status( $order_id, $posted_data, $order ) {
    if ( $order->get_total() > 5000 ) {
        $order->update_status('processing', 'Автоматическое изменение статуса по сумме заказа');
    }
}
  1. Сохраните файл и сделайте тестовый заказ с суммой выше 5000.

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

Чтобы проверить, что изменения работают, сделайте следующее:

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

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

Сравнение вариантов реализации автоматической модификации заказов

МетодПлюсыМинусы
Хук woocommerce_checkout_create_orderИзменения до создания заказа, можно модифицировать позицииНе подходит для изменения статуса после создания
Хук woocommerce_checkout_order_processedПодходит для изменения статуса и дополнительной логикиНельзя изменить позиции заказа, так как они уже созданы
Использование cron-задач для массовых измененийПодходит для отложенной обработкиНе подходит для мгновенных изменений при оформлении заказа
Как автоматизировать создание и обновление календаря мероприятий в WordPress
12.03.2026
Как автоматизировать управление трансляциями в WordPress с помощью плагинов и кода
03.04.2026
Как использовать мета-заголовки для улучшения SEO в WooCommerce
24.05.2026
Как использовать WP-Cron для автоматического удаления старых отзывов WooCommerce
27.05.2026
Как автоматизировать отзывы и оценки в WordPress для бизнес-сайта
14.01.2026
×
WPShop
партнерка без «но»!

До 3225₽ за каждую продажу

Подключиться к игре