Как использовать хуки WooCommerce для добавления дополнительного функционала

Диагностика задачи: зачем нужны хуки в WooCommerce

WooCommerce — мощный плагин для электронной коммерции, который предоставляет обширную систему хуков (actions и filters) для расширения и изменения поведения магазина. Часто возникает необходимость добавить кастомный функционал — например, вывод дополнительной информации на странице товара, изменение поведения корзины или добавление проверки во время оформления заказа. Правильное использование хуков позволяет внедрить изменения без правки исходных файлов плагина, что сохраняет обновляемость и стабильность сайта.

Пошаговое решение: добавляем кастомный текст на страницу товара

Рассмотрим пример, когда нужно вывести дополнительный рекламный блок под описанием товара.

1. Определяем нужное место для вставки

Используем action woocommerce_after_single_product_summary — срабатывает после описания и блока с мета-данными.

2. Пишем функцию вывода

function wpstuff_add_custom_text_after_description() {
    echo '<div class="wpstuff-custom-promo" style="margin-top:20px; padding:10px; background:#f9f9f9; border:1px solid #ddd;">Специальное предложение: бесплатная доставка при заказе от 5000 рублей!</div>';
}

3. Подключаем функцию к хуку

add_action('woocommerce_after_single_product_summary', 'wpstuff_add_custom_text_after_description', 15);

Добавьте этот код в файл functions.php вашей дочерней темы или в отдельный плагин.

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

  • Откройте страницу любого товара на сайте.
  • Прокрутите страницу вниз до описания товара.
  • Убедитесь, что под описанием появился блок с вашим текстом.

Если блок не появился, проверьте правильность подключения к хуку и отсутствие синтаксических ошибок.

Добавление фильтра для изменения цены перед отображением

Иногда требуется динамически изменить цену товара в зависимости от условий. Для этого используется фильтр woocommerce_get_price_html.

function wpstuff_modify_price_html($price_html, $product) {
    if (is_user_logged_in()) {
        $discount = 0.1; // 10% скидка для зарегистрированных пользователей
        $regular_price = floatval($product->get_regular_price());
        $new_price = $regular_price * (1 - $discount);
        $price_html = wc_price($new_price) . ' <small>(скидка 10% для вас)</small>';
    }
    return $price_html;
}
add_filter('woocommerce_get_price_html', 'wpstuff_modify_price_html', 10, 2);

После добавления кода на странице товара для авторизованных пользователей цена будет отображаться со скидкой и примечанием.

Чек-лист: основные хуки WooCommerce для быстрого старта

  • woocommerce_before_single_product — перед основным блоком товара
  • woocommerce_after_single_product_summary — после описания и мета-информации
  • woocommerce_cart_calculate_fees — для добавления дополнительных сборов в корзину
  • woocommerce_checkout_process — для валидации данных при оформлении заказа
  • woocommerce_email_after_order_table — добавить информацию в email уведомления

Частые ошибки при работе с хуками WooCommerce

  • Неправильный приоритет — если ваш код не срабатывает, попробуйте изменить последний параметр в add_action или add_filter. Например, увеличить число для более позднего вызова.
  • Конфликты с другими плагинами — хуки могут быть перезаписаны или отключены сторонними плагинами. Для проверки временно отключите другие расширения.
  • Функция не подключена — убедитесь, что код добавлен в functions.php активной темы или в работающий плагин.
  • Использование хуков вне контекста WooCommerce — проверяйте, что хуки вызываются на страницах WooCommerce, иначе функции могут работать некорректно.

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

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

Сравнение вариантов расширения функционала WooCommerce

МетодПреимуществаНедостаткиКогда использовать
Добавление кода в functions.php темыПросто, быстроЗависит от темы, можно потерять при сменеМелкие правки и быстрые тесты
Создание собственного плагинаНезависимость от темы, лучше для больших измененийТребует базовых знаний плагиновСредние и крупные доработки
Использование готовых плагинов-расширенийПростая установка, поддержкаМожет быть тяжеловесным, не всегда гибкимСтандартные задачи без кастомизации
Автоматическое удаление отзывов в WooCommerce после определённого срока
18.04.2026
Как создать многоуровневую навигацию в WordPress с примерами кода
18.02.2026
Как автоматически удалять старые черновики в WordPress
30.03.2026
Как экспортировать и импортировать настройки WooCommerce с помощью кода
03.05.2026
Как использовать Custom Post Types в WordPress для создания нестираемых структур
04.04.2026