WooCommerce — самая популярная платформа для создания интернет-магазинов на WordPress. Чтобы добавить уникальный функционал или изменить поведение магазина, разработчики используют хуки (hooks) — actions и filters. В этой статье мы подробно разберём, что такое хуки WooCommerce, как их правильно применять, и приведём реальные примеры кода для расширения функционала.
Что такое хуки WooCommerce: actions и filters
Хуки — это точки в коде WooCommerce, куда можно «подвязать» свои функции, чтобы выполнить дополнительный код или изменить данные. Существует два основных типа хуков:
- Action (действия) — позволяют вставить или выполнить код в конкретном месте. Например, добавить дополнительный блок на страницу товара или выполнить обработку при оформлении заказа.
- Filter (фильтры) — позволяют изменить значение переменной или данных перед тем, как они будут использованы или выведены. Например, изменить цену товара перед отображением или модифицировать текст кнопки.
WooCommerce предоставляет сотни таких хуков, что даёт гибкость в кастомизации магазина без изменения исходного кода плагина.
Как определить нужный хук для задачи
Чтобы выбрать подходящий хук, нужно понимать, в какой части магазина вы хотите внести изменения. Для этого полезно:
- Изучить официальную документацию WooCommerce по хукам — https://docs.woocommerce.com/wc-apidocs/hook-docs.html
- Включить режим отладки, чтобы вывести все хуки на странице (например, с помощью плагина WP Hook Debugger).
- Искать в исходниках WooCommerce вызовы
do_action()иapply_filters()в тех местах, где хотите изменить поведение.
Например, чтобы добавить контент после описания товара, можно использовать хук woocommerce_after_single_product_summary.
Практические примеры использования хуков WooCommerce
1. Добавление текста после цены товара
Допустим, нужно показать небольшой текст с информацией о скидке прямо под ценой товара. Для этого используем action woocommerce_single_product_summary с приоритетом 25 (цена выводится на 10, описание на 20).
add_action('woocommerce_single_product_summary', 'wpdream_add_text_after_price', 25);
function wpdream_add_text_after_price() {
echo '<p style="color:green; font-weight:bold;">Акция! При покупке сегодня — бесплатная доставка.</p>';
}Этот код вставьте в файл functions.php вашей темы или в кастомный плагин. После обновления страницы товара под ценой появится нужный текст.
2. Изменение текста кнопки "Добавить в корзину"
Для изменения текста кнопки используйте фильтр woocommerce_product_single_add_to_cart_text.
add_filter('woocommerce_product_single_add_to_cart_text', 'wpdream_change_add_to_cart_text');
function wpdream_change_add_to_cart_text() {
return 'Купить сейчас';
}Этот фильтр заменит стандартный текст кнопки на "Купить сейчас".
3. Добавление пользовательского поля на страницу оформления заказа
Иногда надо добавить дополнительное поле, например, комментарий или номер телефона для доставки. Используем хуки woocommerce_after_order_notes для вывода поля и обработку сохранения.
add_action('woocommerce_after_order_notes', 'wpdream_add_custom_checkout_field');
function wpdream_add_custom_checkout_field($checkout) {
echo '<div id="wpdream_custom_checkout_field">';
woocommerce_form_field('wpdream_phone', array(
'type' => 'text',
'class' => array('wpdream-phone-field form-row-wide'),
'label' => __('Номер телефона для доставки'),
'placeholder' => __('Введите номер телефона'),
'required' => true,
), $checkout->get_value('wpdream_phone'));
echo '</div>';
}
add_action('woocommerce_checkout_process', 'wpdream_validate_custom_checkout_field');
function wpdream_validate_custom_checkout_field() {
if (!$_POST['wpdream_phone']) {
wc_add_notice(__('Пожалуйста, укажите номер телефона для доставки.'), 'error');
}
}
add_action('woocommerce_checkout_update_order_meta', 'wpdream_save_custom_checkout_field');
function wpdream_save_custom_checkout_field($order_id) {
if (!empty($_POST['wpdream_phone'])) {
update_post_meta($order_id, '_wpdream_phone', sanitize_text_field($_POST['wpdream_phone']));
}
}Таким образом, вы добавите обязательное поле, проверите его заполнение и сохраните данные в метаполе заказа.
Полезные плагины для работы с хуками WooCommerce
Для удобства работы с хуками WooCommerce можно использовать плагины, которые помогут быстро внедрять и тестировать изменения:
- Code Snippets — удобный интерфейс для добавления PHP-кода без правки
functions.php. - WooCommerce Customizer — позволяет менять стандартные тексты и элементы через настройки без кода, но с поддержкой хуков.
- WP Hook Debugger — выводит список всех хуков, срабатывающих на странице, помогает найти нужный для кастомизации.
Советы по работе с хуками WooCommerce
Чтобы не столкнуться с проблемами, соблюдайте рекомендации:
- Используйте префиксы для своих функций, например,
wpdream_, чтобы избежать конфликтов. - Не меняйте исходные файлы WooCommerce — все изменения делайте через хуки.
- Тестируйте код на тестовом сайте, чтобы избежать сбоев и ошибок на рабочем магазине.
- Старайтесь использовать фильтры для изменения данных, а actions — для вывода или выполнения действий.
Хуки — мощный инструмент для кастомизации WooCommerce. Правильное их использование позволяет создавать уникальные решения и улучшать опыт пользователей без сложных вмешательств в ядро.