WooCommerce — это мощный плагин для создания интернет-магазина на WordPress. Однако для тонкой настройки его функционала часто требуется использовать хуки (actions и filters), которые позволяют изменить поведение магазина без правки исходного кода плагина. В этой статье подробно разберём, как использовать WooCommerce hooks для решения конкретных задач и приведём примеры кода для практической реализации.
Что такое хуки WooCommerce и зачем они нужны
Хуки в WooCommerce — это специальные точки расширения, которые позволяют программистам внедрять свой код в определённые места работы плагина. С помощью хуков можно:
- Добавлять или изменять содержимое страниц товара, корзины и оформления заказа;
- Изменять поведение стандартных функций WooCommerce;
- Интегрировать дополнительные проверки и уведомления;
- Автоматизировать задачи и улучшать пользовательский опыт.
WooCommerce разделяет хуки на два типа: actions (действия) и filters (фильтры). Actions выполняют код в заданном месте, а filters изменяют данные перед выводом или обработкой.
Использование actions для добавления контента и функционала
Рассмотрим несколько примеров, как через actions можно расширить функционал магазина.
Добавление дополнительного текста на страницу товара
Чтобы добавить кастомное сообщение под описанием товара, используем action woocommerce_single_product_summary.
function wpbest_add_custom_text() {
echo '<p style="color: #0073aa; font-weight: bold;">Бесплатная доставка при заказе от 5000 рублей!</p>';
}
add_action('woocommerce_single_product_summary', 'wpbest_add_custom_text', 25);Здесь число 25 — это приоритет, который определяет порядок вывода относительно других элементов.
Добавление текста в корзину перед списком товаров
Используем action woocommerce_before_cart для вывода уведомления.
function wpbest_cart_notice() {
echo '<div style="background: #fffae6; padding: 15px; border: 1px solid #ffd42a; margin-bottom: 20px;">Не забудьте использовать промокод при оформлении заказа!</div>';
}
add_action('woocommerce_before_cart', 'wpbest_cart_notice');Использование filters для изменения данных и вывода
Filters позволяют модифицировать информацию, которую выводит WooCommerce.
Изменение текста кнопки добавления в корзину
Фильтр woocommerce_product_single_add_to_cart_text позволяет изменить текст кнопки на странице товара.
function wpbest_custom_add_to_cart_text() {
return 'Купить сейчас';
}
add_filter('woocommerce_product_single_add_to_cart_text', 'wpbest_custom_add_to_cart_text');Изменение цены товара с учётом скидки по роли пользователя
Этот пример покажет, как изменить цену для определённой роли пользователя, например, для оптовиков.
function wpbest_discount_for_wholesale($price, $product) {
if (current_user_can('wholesale_customer')) {
$price = $price * 0.8; // Скидка 20%
}
return $price;
}
add_filter('woocommerce_product_get_price', 'wpbest_discount_for_wholesale', 10, 2);
add_filter('woocommerce_product_get_regular_price', 'wpbest_discount_for_wholesale', 10, 2);Практические советы по работе с хуками WooCommerce
Как находить нужные хуки
Чтобы эффективно использовать хуки, нужно уметь их находить. Лучший способ — изучать исходный код WooCommerce в папке woocommerce/templates, а также официальную документацию на сайте WooCommerce. Для ускорения поиска можно использовать плагины, например Clearfy Pro, которые помогают отключать ненужные функции и оптимизировать работу.
Используйте дочерние темы или собственные плагины для добавления кода
Чтобы не потерять изменения при обновлении WooCommerce или темы, рекомендуется добавлять свои функции в файл functions.php дочерней темы или создавать небольшой плагин. Например:
/**
* Плагин WPBest WooCommerce Hooks Customization
*/
function wpbest_custom_init() {
// сюда вставляйте ваши add_action и add_filter
}
add_action('init', 'wpbest_custom_init');Отладка хуков
Для проверки, работает ли ваш код, можно временно использовать error_log или выводить сообщения через var_dump и die(). Также удобно применять плагин WPRemark для отслеживания выполненных хуков и действий.
Примеры комплексного использования хуков
Автоматическое добавление товара в корзину при заходе на сайт
Задача: при первом посещении сайта добавить в корзину определённый товар, например, акционный.
function wpbest_add_promotional_product() {
if ( ! WC()->cart->is_empty() ) {
return; // Если корзина не пустая, ничего не делаем
}
$product_id = 123; // ID товара для добавления
WC()->cart->add_to_cart($product_id);
}
add_action('wp_loaded', 'wpbest_add_promotional_product');Изменение текста благодарности после оформления заказа
Используем фильтр woocommerce_thankyou_order_received_text для кастомизации сообщения.
function wpbest_custom_thankyou_message($thankyou_text, $order) {
return 'Спасибо за заказ! Мы свяжемся с вами в ближайшее время.';
}
add_filter('woocommerce_thankyou_order_received_text', 'wpbest_custom_thankyou_message', 10, 2);Заключение по использованию хуков WooCommerce
Использование хуков — это ключ к глубокой кастомизации WooCommerce без риска повредить ядро плагина. Благодаря actions и filters можно добавить уникальный функционал, изменить внешний вид и поведение магазина под любые нужды. Главное — внимательно изучать документацию, тестировать изменения и применять best practices для поддержки кода в будущем.
Если вы хотите расширить возможности WooCommerce и оптимизировать магазин, рекомендуем также обратить внимание на плагины, такие как Clearfy Pro и WPRemark, которые помогут упростить настройку и анализ работы магазина.