WooCommerce — одна из самых популярных платформ для создания интернет-магазинов на базе WordPress. Но при доработке функционала часто возникает необходимость изменить стандартное поведение плагина, при этом не нарушая возможность обновления и безопасности сайта. В этой статье мы подробно разберем, как изменить функции WooCommerce правильно, используя возможности WordPress: хуки, фильтры, создание мини-плагинов и кастомных функций. Это поможет вам избежать прямого редактирования основных файлов WooCommerce и сохранить стабильность сайта.
Почему нельзя менять файлы WooCommerce напрямую
Многие новички совершают ошибку, открывая и меняя файлы плагина WooCommerce напрямую. Это крайне не рекомендуется по нескольким причинам:
- При обновлении плагина ваши изменения будут потеряны. WooCommerce регулярно выпускает обновления, которые перезаписывают файлы.
- Нарушается стабильность и безопасность. Прямые правки могут привести к конфликтам и ошибкам.
- Трудно поддерживать и масштабировать. После обновлений сложно восстановить внесённые изменения.
Поэтому лучший способ — использование хуков и фильтров WordPress, которые предоставляет WooCommerce.
Что такое хуки и фильтры в WooCommerce
WooCommerce расширяет возможности WordPress, сохраняя совместимость с его системой хуков. Хуки бывают двух типов:
- Действия (actions) — позволяют выполнить дополнительный код в определенный момент.
- Фильтры (filters) — позволяют изменить данные перед выводом или сохранением.
Используя хуки, мы можем изменить поведение WooCommerce без правки исходного кода.
Пример: изменение текста кнопки «Добавить в корзину»
Допустим, нужно изменить стандартный текст кнопки «Add to cart» на «Купить сейчас». Для этого используем фильтр woocommerce_product_add_to_cart_text. В файл functions.php вашей темы или в мини-плагин wpmax добавляем следующий код:
function wpmax_change_add_to_cart_text() {
return 'Купить сейчас';
}
add_filter('woocommerce_product_add_to_cart_text', 'wpmax_change_add_to_cart_text');Этот код заменит текст без изменения исходных файлов WooCommerce.
Создание мини-плагина для кастомных функций WooCommerce
Если вы хотите собрать несколько изменений в одном месте и не зависеть от темы, лучше создать собственный мини-плагин. Это удобно для поддержки и переносимости.
Создайте папку wp-content/plugins/wpmax-woocommerce-custom и в ней файл wpmax-woocommerce-custom.php с таким содержанием:
<?php
/**
* Plugin Name: WPMax WooCommerce Custom
* Description: Кастомные функции для WooCommerce на wpmax.ru
* Version: 1.0
* Author: WPMax
*/
// Пример изменения текста кнопки
function wpmax_change_add_to_cart_text() {
return 'Купить сейчас';
}
add_filter('woocommerce_product_add_to_cart_text', 'wpmax_change_add_to_cart_text');
// Добавим кастомное сообщение в корзину
function wpmax_custom_cart_message() {
echo '<p>Спасибо, что выбрали наш магазин!</p>';
}
add_action('woocommerce_before_cart', 'wpmax_custom_cart_message');После активации плагина изменения вступят в силу. Вы можете добавлять новые функции в этот файл.
Примеры полезных изменений WooCommerce через хуки
1. Изменение цены с учетом скидки для определенной роли пользователя
Допустим, вы хотите давать скидку 10% для пользователей с ролью «оптовик».
function wpmax_custom_price_for_wholesale($price, $product) {
if (current_user_can('wholesale_customer')) {
$price = $price * 0.9;
}
return $price;
}
add_filter('woocommerce_product_get_price', 'wpmax_custom_price_for_wholesale', 10, 2);
add_filter('woocommerce_product_get_regular_price', 'wpmax_custom_price_for_wholesale', 10, 2);2. Добавление пользовательского поля на страницу товара
Иногда нужно добавить дополнительную информацию, например, гарантийный срок.
function wpmax_add_custom_product_field() {
global $product;
echo '<div class="wpmax-warranty"><strong>Гарантия:</strong> 12 месяцев</div>';
}
add_action('woocommerce_single_product_summary', 'wpmax_add_custom_product_field', 25);3. Изменение количества товаров, добавляемых в корзину по умолчанию
Чтобы установить количество по умолчанию равным 2:
function wpmax_change_default_quantity($quantity, $product) {
return 2;
}
add_filter('woocommerce_quantity_input_min', 'wpmax_change_default_quantity', 10, 2);Отладка и тестирование изменений
После внесения изменений важно проверить, что сайт работает корректно:
- Используйте режим отладки WordPress, включив
WP_DEBUGвwp-config.php. - Проверяйте на тестовом сайте, а не на живом.
- Используйте инструменты разработчика браузера для просмотра HTML и JavaScript ошибок.
- Тестируйте разные роли пользователей и сценарии.
Если изменения не работают, проверьте правильность написания функций и приоритеты хуков.
Заключение
Правильное изменение функций WooCommerce — это использование хуков и фильтров, а также создание мини-плагинов для кастомного кода. Такой подход позволяет сохранять безопасность, обновляемость и стабильность сайта. Используйте приведенные примеры и адаптируйте их под свои задачи, чтобы развивать магазин без риска сломать функционал.