WooCommerce — одна из самых популярных платформ для интернет-магазинов на WordPress. Одним из ключевых инструментов для расширения и автоматизации функционала WooCommerce являются хуки (actions и filters). В этой статье мы подробно рассмотрим, как правильно использовать хуки для автоматизации различных процессов в магазине, приведём примеры кода и расскажем о полезных плагинах, упрощающих работу с ними.
Что такое хуки в WooCommerce и зачем они нужны
Хуки — это точки подключения, которые позволяют вставлять свой код или изменять поведение существующего без правки исходных файлов плагина. WooCommerce, как и WordPress, использует два типа хуков: actions (действия) и filters (фильтры).
Actions позволяют запускать функции в определённые моменты, например, после оформления заказа или добавления товара в корзину. Filters дают возможность изменить значения данных перед отображением или сохранением.
Используя хуки, вы можете автоматизировать задачи, такие как отправка кастомных уведомлений, изменение статусов заказов, интеграция с внешними сервисами и многое другое.
Примеры полезных хуков и их применение
1. Автоматическое изменение статуса заказа после оплаты
Иногда требуется автоматически менять статус заказа, например, переводить его в «обработан» после успешной оплаты. Для этого используется action woocommerce_payment_complete. Ниже пример функции, которая это делает:
function wpall_woocommerce_auto_process_order( $order_id ) {
if ( ! $order_id ) return;
$order = wc_get_order( $order_id );
// Проверяем текущий статус
if ( $order->get_status() === 'processing' ) return;
// Устанавливаем статус 'processing'
$order->update_status( 'processing', 'Автоматический переход статуса после оплаты' );
}
add_action( 'woocommerce_payment_complete', 'wpall_woocommerce_auto_process_order' );Эта функция запускается после успешной оплаты и переводит заказ в нужный статус.
2. Добавление пользовательского поля в страницу оформления заказа и сохранение данных
Часто нужно добавить дополнительные поля, например, для комментариев или особых инструкций. Это делается через хуки woocommerce_after_order_notes для отображения и woocommerce_checkout_update_order_meta для сохранения.
function wpall_woocommerce_custom_checkout_field() {
echo '<p class="form-row form-row-wide">'
. '<label for="custom_field">Особые инструкции</label>'
. '<textarea name="custom_field" id="custom_field" rows="4" cols="5" placeholder="Напишите здесь..."></textarea>'
. '</p>';
}
add_action( 'woocommerce_after_order_notes', 'wpall_woocommerce_custom_checkout_field' );
function wpall_woocommerce_save_custom_checkout_field( $order_id ) {
if ( ! empty( $_POST['custom_field'] ) ) {
update_post_meta( $order_id, '_custom_field', sanitize_textarea_field( $_POST['custom_field'] ) );
}
}
add_action( 'woocommerce_checkout_update_order_meta', 'wpall_woocommerce_save_custom_checkout_field' );Таким образом вы сможете добавить любое поле и сохранить его вместе с заказом.
3. Отправка уведомления менеджеру при новом заказе с кастомным текстом
Для автоматизации уведомлений можно использовать фильтр woocommerce_email_subject_new_order и action woocommerce_email_after_order_table для добавления дополнительного текста.
function wpall_woocommerce_custom_new_order_subject( $subject, $order ) {
$subject = 'Новый заказ #' . $order->get_order_number() . ' – Срочно обработать!';
return $subject;
}
add_filter( 'woocommerce_email_subject_new_order', 'wpall_woocommerce_custom_new_order_subject', 10, 2 );
function wpall_woocommerce_custom_email_text( $order, $sent_to_admin, $plain_text, $email ) {
if ( $sent_to_admin && $email->id === 'new_order' ) {
echo '<p><strong>Внимание!</strong> Пожалуйста, проверьте наличие всех товаров на складе.</p>';
}
}
add_action( 'woocommerce_email_after_order_table', 'wpall_woocommerce_custom_email_text', 10, 4 );Это поможет менеджерам быстрее реагировать на новые заказы.
Полезные плагины для работы с хуками WooCommerce
Для удобства разработки и тестирования хуков можно использовать следующие плагины:
- Code Snippets — позволяет безопасно добавлять пользовательский PHP-код в сайт без правки файлов.
- WooCommerce Customizer — облегчает добавление функций через графический интерфейс.
- WPCodeBox — мощный менеджер сниппетов с поддержкой версионности и условий загрузки.
Также рекомендуем ознакомиться с плагином Clearfy Pro, который помогает оптимизировать работу WooCommerce и WordPress в целом, отключая ненужные функции и упрощая код.
Советы по безопасному использованию хуков в WooCommerce
При работе с хуками важно соблюдать несколько правил:
- Используйте префиксы в названиях функций, например,
wpall_, чтобы избежать конфликтов с другими плагинами. - Проверяйте входные данные и используйте функции очистки и валидации, например,
sanitize_textarea_fieldилиesc_html. - Тестируйте изменения на тестовом окружении, чтобы избежать сбоев на рабочем сайте.
- Изучайте документацию WooCommerce и WordPress для понимания доступных хуков и их параметров.
Соблюдение этих рекомендаций поможет создать стабильный и функциональный магазин с минимальными усилиями.
Дополнительные примеры автоматизации с использованием хуков
Автоматическое добавление товара в корзину при посещении определённой страницы
Иногда полезно автоматически добавить товар в корзину, если пользователь зашёл на акционную страницу. Это можно сделать через хук template_redirect:
function wpall_woocommerce_auto_add_product() {
if ( is_page( 'special-offer' ) ) {
$product_id = 123; // ID товара
$found = false;
// Проверяем, есть ли товар в корзине
foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
if ( $values['product_id'] == $product_id ) {
$found = true;
break;
}
}
if ( ! $found ) {
WC()->cart->add_to_cart( $product_id );
}
}
}
add_action( 'template_redirect', 'wpall_woocommerce_auto_add_product' );Так вы можете повысить конверсию, предлагая товары прямо на специальных страницах.
Изменение цены товара динамически через фильтр
Чтобы изменить цену товара в зависимости от условий, используйте фильтр woocommerce_get_price:
function wpall_woocommerce_dynamic_price( $price, $product ) {
if ( is_user_logged_in() ) {
// Скидка 10% для авторизованных
$price = $price * 0.9;
}
return $price;
}
add_filter( 'woocommerce_product_get_price', 'wpall_woocommerce_dynamic_price', 10, 2 );Это простой способ реализовать персональные скидки или акции.
Заключение по теме использования хуков WooCommerce
Хуки — мощный инструмент для настройки и автоматизации WooCommerce. Используя их грамотно, можно значительно расширить функциональность магазина без сложных изменений в ядре. В статье приведены практические примеры, которые легко адаптировать под свои задачи. Для удобства используйте плагины-менеджеры сниппетов и не забывайте про безопасность кода.