WooCommerce — одна из самых популярных платформ для создания интернет-магазинов на базе WordPress. Одним из ключевых инструментов для расширения возможностей WooCommerce являются хуки (actions и filters). Они позволяют без изменения основного кода плагина добавлять или изменять функционал магазина.
Что такое хуки в WooCommerce и зачем они нужны
Хуки — это специальные точки в коде WooCommerce, куда можно «подцепить» собственные функции. С помощью хуков можно добавлять новые элементы на страницы магазина, изменять вывод информации, обрабатывать данные и многое другое. Это особенно важно, чтобы при обновлениях WooCommerce ваши изменения не были утеряны.
Существует два типа хуков:
- Action hooks — позволяют выполнить определённый код в заданный момент (например, добавить кнопку или блок с информацией).
- Filter hooks — позволяют изменить данные перед их выводом или сохранением.
Основные хуки WooCommerce для добавления функционала
Разберём несколько полезных хуков, которые чаще всего применяются для кастомизации:
1. Добавление текста или HTML в карточку товара
Хук woocommerce_single_product_summary позволяет вставлять контент в описание товара. Например, добавим специальный блок с дополнительной информацией:
add_action('woocommerce_single_product_summary', 'wppremium_add_custom_text', 25);
function wppremium_add_custom_text() {
echo '<div class="custom-info">Бесплатная доставка при заказе от 5000 рублей</div>';
}Число 25 — приоритет выполнения, определяет порядок вывода (чем меньше, тем раньше).
2. Изменение цены перед выводом
Чтобы изменить цену товара, используется фильтр woocommerce_get_price_html. Например, добавим скидку 10% для всех товаров:
add_filter('woocommerce_get_price_html', 'wppremium_discount_price', 100, 2);
function wppremium_discount_price($price_html, $product) {
$regular_price = $product->get_regular_price();
if (!$regular_price) return $price_html;
$discounted_price = $regular_price * 0.9;
$new_price = wc_price($discounted_price);
return '<del>' . $price_html . '</del> <ins>' . $new_price . '</ins>';
}Этот код отобразит прежнюю цену зачеркнутой и новую — с учётом скидки.
3. Добавление поля на страницу оформления заказа
Иногда требуется добавить дополнительное поле (например, комментарий или подарок). Используем хук woocommerce_after_order_notes для вывода поля и woocommerce_checkout_update_order_meta для сохранения данных:
add_action('woocommerce_after_order_notes', 'wppremium_add_custom_checkout_field');
function wppremium_add_custom_checkout_field($checkout) {
echo '<div id="custom_checkout_field">';
woocommerce_form_field('wppremium_gift_message', array(
'type' => 'textarea',
'class' => array('form-row-wide'),
'label' => __('Сообщение для подарка'),
'placeholder' => __('Введите ваше сообщение'),
), $checkout->get_value('wppremium_gift_message'));
echo '</div>';
}
add_action('woocommerce_checkout_update_order_meta', 'wppremium_save_custom_checkout_field');
function wppremium_save_custom_checkout_field($order_id) {
if (!empty($_POST['wppremium_gift_message'])) {
update_post_meta($order_id, 'wppremium_gift_message', sanitize_textarea_field($_POST['wppremium_gift_message']));
}
}Это позволит покупателям оставить пожелание к заказу.
Практические советы по работе с хуками WooCommerce
Используйте дочернюю тему или собственный плагин
Чтобы не потерять изменения при обновлениях, добавляйте код в functions.php дочерней темы или создавайте небольшой плагин. Это улучшит поддержку и безопасность.
Отлаживайте код с помощью логов
Если что-то не работает, используйте функцию error_log() для записи в логи и отладки. Например, error_log('Хук сработал');.
Изучайте официальную документацию и хуки
WooCommerce содержит сотни хуков — лучше изучать их на официальном сайте и в исходниках плагина, чтобы использовать максимально подходящие для задачи.
Инструменты и плагины для работы с хуками WooCommerce
Для упрощения работы с хуками рекомендуем обратить внимание на следующие плагины:
- Code Snippets — удобный интерфейс для добавления PHP-кода без правки файла functions.php.
- Clearfy Pro — оптимизация и управление хуками, удаление лишнего кода WooCommerce.
Также полезно использовать темы с поддержкой WooCommerce, например Root, для удобной кастомизации.
Заключение
Использование хуков WooCommerce — мощный способ расширить функционал магазина без риска поломок при обновлениях. Важно чётко понимать, какой хук и зачем применять, и тестировать изменения на тестовом сайте. Примеры из этой статьи помогут начать создавать свои доработки на базе WooCommerce.