Как использовать хуки WooCommerce для модификации корзины

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

Что такое хуки WooCommerce и почему они важны

Хуки — это специальные точки в коде, куда можно «подцепить» свою функцию и изменить или дополнить работу плагина. WooCommerce предоставляет два типа хуков: actions для выполнения дополнительного кода и filters для изменения данных. Такой подход позволяет вносить изменения, не нарушая обновляемость плагина.

В корзине WooCommerce хуки активно применяются для изменения вывода товаров, цен, кнопок и работы сессий пользователя.

Основные хуки для изменения корзины WooCommerce

Фильтры для изменения данных корзины

Например, если нужно изменить цену товара в корзине, используется фильтр woocommerce_cart_item_price. Он позволяет заменить стоимость на лету, не трогая базовые данные.

add_filter('woocommerce_cart_item_price', 'wpsystem_change_cart_item_price', 10, 3);
function wpsystem_change_cart_item_price($price, $cart_item, $cart_item_key) {
    // Условие: если товар с ID 123, меняем цену
    if ($cart_item['product_id'] == 123) {
        $new_price = wc_price(99); // новая цена 99 рублей
        return $new_price;
    }
    return $price;
}

Такой код добавляем в functions.php темы или в свой кастомный плагин.

Action-хуки для добавления контента в корзину

Чтобы добавить дополнительный текст или HTML в корзину, можно использовать action woocommerce_cart_totals_before_order_total. Например, показывать подсказку перед итоговой суммой заказа.

add_action('woocommerce_cart_totals_before_order_total', 'wpsystem_add_cart_notice');
function wpsystem_add_cart_notice() {
    echo '<p style="color: #0073aa; font-weight: bold;">Не забудьте проверить промокод!</p>';
}

Практическое применение: добавление блока с бесплатной доставкой

Для увеличения среднего чека полезно показывать прогресс до бесплатной доставки. Реализуем динамический индикатор в корзине с помощью хуков.

add_action('woocommerce_before_cart_totals', 'wpsystem_free_shipping_progress');
function wpsystem_free_shipping_progress() {
    $free_shipping_min = 3000; // Минимальная сумма для бесплатной доставки
    $cart_total = WC()->cart->subtotal;
    if ($cart_total < $free_shipping_min) {
        $diff = $free_shipping_min - $cart_total;
        echo '<div style="padding:10px; background:#e0f7fa; margin-bottom:15px; border-radius:4px;">';
        echo 'Добавьте товаров на сумму ' . wc_price($diff) . ' для бесплатной доставки!';
        echo '</div>';
    } else {
        echo '<div style="padding:10px; background:#c8e6c9; margin-bottom:15px; border-radius:4px;">';
        echo 'Поздравляем! Вы получили бесплатную доставку.';
        echo '</div>';
    }
}

Этот блок появится в корзине, мотивируя пользователей увеличить заказ.

Как фильтровать и изменять данные товаров в корзине

Иногда требуется добавить дополнительное поле или метку к товарам в корзине. Например, показать кастомный атрибут или статью из метаполя.

Используем фильтр woocommerce_get_item_data — он позволяет добавить любую информацию под названием товара.

add_filter('woocommerce_get_item_data', 'wpsystem_add_custom_item_data', 10, 2);
function wpsystem_add_custom_item_data($item_data, $cart_item) {
    $product = $cart_item['data'];
    $custom_value = get_post_meta($product->get_id(), '_wpsystem_custom_label', true);
    if ($custom_value) {
        $item_data[] = array(
            'key' => 'Особенность',
            'value' => wc_clean($custom_value)
        );
    }
    return $item_data;
}

Для этого нужно предварительно добавить метаполе _wpsystem_custom_label через админку или код.

Советы по отладке и безопасности при работе с хуками корзины

При работе с хуками важно проверять входящие данные, чтобы избежать ошибок и возможных уязвимостей. Например, всегда используйте функции очистки данных, такие как wc_clean(), и проверяйте типы данных.

Для отладки удобно использовать плагин Clearfy Pro, который расширяет возможности логирования и управления производительностью WooCommerce.

Заключение

Хуки WooCommerce — мощный инструмент для кастомизации корзины. С их помощью можно менять цены, добавлять пользовательские сообщения, создавать динамические уведомления и улучшать UX магазина без сложных правок ядра. Рекомендуется создавать отдельный плагин для кастомных функций, чтобы сохранить изменения при обновлениях.

WooCommerce: автоматическое обновление стоимости товара при изменении атрибутов
13.05.2026
Автоматическое удаление старого контента в WordPress
07.04.2026
Как создать собственный метабокс в WordPress
05.11.2025
Как добавить автоматическое обновление тем и плагинов в WordPress
15.04.2026
Как использовать фильтры WooCommerce для изменения цены товара
08.03.2026