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

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

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

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

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

Пример базового использования action-хука:

add_action('woocommerce_before_main_content', 'wparticles_display_custom_message');
function wparticles_display_custom_message() {
    echo '<p>Добро пожаловать в наш магазин!</p>';
}

Этот код выведет приветственное сообщение перед основным контентом WooCommerce.

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

Добавление контента в карточку товара

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

Пример: добавим под названием товара кастомное уведомление о скидке.

add_action('woocommerce_single_product_summary', 'wparticles_custom_sale_notice', 6);
function wparticles_custom_sale_notice() {
    global $product;
    if ($product->is_on_sale()) {
        echo '<p style="color: red; font-weight: bold;">Скидка действует до конца недели!</p>';
    }
}

Здесь мы проверяем, есть ли скидка, и если да — показываем уведомление красным цветом. Приоритет 6 указывает место вывода, которое можно настроить.

Изменение цены товара с помощью фильтра

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

add_filter('woocommerce_get_price', 'wparticles_dynamic_price_adjustment', 10, 2);
function wparticles_dynamic_price_adjustment($price, $product) {
    // Пример: скидка 10% для пользователей с ролью "premium_client"
    if (current_user_can('premium_client')) {
        $price = $price * 0.9;
    }
    return $price;
}

Этот код проверит роль текущего пользователя и уменьшит цену на 10%, если он подходит под условие.

Практическое применение хуков WooCommerce для улучшения UX и функционала

Добавление пользовательского поля в оформление заказа

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

1. Добавим поле в форму:

add_action('woocommerce_after_order_notes', 'wparticles_add_custom_checkout_field');
function wparticles_add_custom_checkout_field($checkout) {
    echo '<div id="wparticles_custom_checkout_field"><h3>Дополнительная информация</h3>';
    woocommerce_form_field('wparticles_delivery_note', array(
        'type' => 'textarea',
        'class' => array('wparticles-field form-row-wide'),
        'label' => 'Пожелания к доставке',
        'placeholder' => 'Введите ваши пожелания',
        ), $checkout->get_value('wparticles_delivery_note'));
    echo '</div>';
}

2. Проверим поле при отправке заказа:

add_action('woocommerce_checkout_process', 'wparticles_custom_checkout_field_process');
function wparticles_custom_checkout_field_process() {
    if (!$_POST['wparticles_delivery_note']) {
        wc_add_notice(__('Пожалуйста, заполните поле "Пожелания к доставке".'), 'error');
    }
}

3. Сохраним данные в мета заказа:

add_action('woocommerce_checkout_update_order_meta', 'wparticles_save_custom_checkout_field');
function wparticles_save_custom_checkout_field($order_id) {
    if (!empty($_POST['wparticles_delivery_note'])) {
        update_post_meta($order_id, 'wparticles_delivery_note', sanitize_textarea_field($_POST['wparticles_delivery_note']));
    }
}

4. Отобразим поле в админке заказа:

add_action('woocommerce_admin_order_data_after_billing_address', 'wparticles_display_custom_field_admin_order', 10, 1);
function wparticles_display_custom_field_admin_order($order){
    $note = get_post_meta($order->get_id(), 'wparticles_delivery_note', true);
    if ($note) {
        echo '<p><strong>Пожелания к доставке:</strong> ' . esc_html($note) . '</p>';
    }
}

Использование плагина Clearfy для управления хуками и оптимизации WooCommerce

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

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

Заключение: лучшие практики работы с хуками WooCommerce

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

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

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

Как создать модульный код в WordPress для плагинов и тем
14.01.2026
Как отключить автопробег (auto increment) в WordPress без плагинов
09.04.2026
Как добавить локализацию в плагин WordPress
13.02.2026
Как удалить ненужные шорткоды в WordPress без ошибок
31.01.2026
Как настроить автопостинг в WordPress из разных источников
17.02.2026

Ниже мы подобрали самые актуальные материалы по Вордпресс