WooCommerce — самый популярный плагин для создания интернет-магазинов на WordPress. Он предоставляет широкий набор функций и хуков, которые позволяют разработчикам создавать кастомные решения и расширять стандартный функционал. В этой статье мы подробно рассмотрим, как использовать основные функции WooCommerce для разработки, приведем примеры кода и разберем практические задачи, с которыми сталкивается каждый разработчик.
Основные функции WooCommerce: что нужно знать разработчику
WooCommerce содержит множество функций, упрощающих работу с продуктами, корзиной, заказами и пользователями. Начнем с обзора наиболее полезных функций, которые пригодятся при разработке:
wc_get_product( $product_id )— возвращает объект товара по его ID. Позволяет получить данные о продукте, например цену, описание, атрибуты.WC()->cart— объект корзины, с помощью которого можно добавлять, удалять товары и получать информацию о содержимом корзины.wc_get_checkout_url()— возвращает URL страницы оформления заказа.wc_get_order( $order_id )— получает объект заказа для работы с его данными.woocommerce_template_loop_add_to_cart()— функция вывода кнопки "Добавить в корзину".
Используя эти функции, можно программно управлять товарами, корзиной и заказами, а также интегрировать кастомные интерфейсы и логику.
Пример: Получение и вывод информации о товаре
Чтобы вывести цену и название товара на любой странице, достаточно получить объект товара через wc_get_product() и обратиться к нужным методам:
function wplite_display_product_info($product_id) {
$product = wc_get_product($product_id);
if (!$product) return;
echo '<h2>' . esc_html($product->get_name()) . '</h2>';
echo '<p>Цена: ' . wc_price($product->get_price()) . '</p>';
}Вы можете использовать такую функцию в шаблонах или шорткодах для динамического вывода информации о товарах.
Работа с корзиной WooCommerce: добавление и удаление товаров программно
Иногда требуется добавить товар в корзину по событию, не используя стандартную кнопку. Например, для акций или лендингов. WooCommerce предоставляет удобный объект WC()->cart для управления корзиной.
Для добавления товара в корзину используется метод add_to_cart(). Вот пример функции, которая добавляет товар с определенным ID и количеством:
function wplite_add_product_to_cart($product_id, $quantity = 1) {
if (!WC()->cart) return false;
return WC()->cart->add_to_cart($product_id, $quantity);
}Чтобы удалить товар из корзины, нужно получить ключ позиции и вызвать remove_cart_item():
function wplite_remove_product_from_cart($cart_item_key) {
if (!WC()->cart) return false;
WC()->cart->remove_cart_item($cart_item_key);
}Для получения ключей товаров в корзине можно пройтись циклом по WC()->cart->get_cart() и проверить ID товаров.
Пример: Автоматическое добавление товара в корзину при посещении страницы
Ниже пример, который добавляет товар с ID 123 в корзину при заходе на страницу товара, если он там еще не добавлен:
add_action('template_redirect', 'wplite_auto_add_product_to_cart');
function wplite_auto_add_product_to_cart() {
if (!is_product()) return;
$product_id = 123; // ID нужного товара
$found = false;
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
if ($cart_item['product_id'] == $product_id) {
$found = true;
break;
}
}
if (!$found) {
WC()->cart->add_to_cart($product_id);
}
}Работа с заказами WooCommerce: получение и изменение данных
Заказы в WooCommerce — это объекты класса WC_Order. С их помощью можно получать информацию о покупателе, товарах, статусах, а также изменять данные.
Чтобы получить заказ, используйте функцию wc_get_order( $order_id ). Например, чтобы получить сумму заказа и email клиента:
$order = wc_get_order($order_id);
if ($order) {
$total = $order->get_total();
$email = $order->get_billing_email();
}Для изменения статуса заказа применяется метод update_status(). Например, чтобы автоматически менять статус заказа на "выполнен" после оплаты через кастомный шлюз:
$order->update_status('completed', 'Заказ автоматически завершен');Пример: Добавление пользовательских мета к заказу
Вы можете хранить дополнительные данные в заказах, используя мета-поля. Пример сохранения пользовательского поля:
function wplite_save_custom_order_meta($order_id) {
if (isset($_POST['custom_field'])) {
update_post_meta($order_id, '_wplite_custom_field', sanitize_text_field($_POST['custom_field']));
}
}
add_action('woocommerce_checkout_update_order_meta', 'wplite_save_custom_order_meta');Для вывода этого поля в админке или в письмах можно использовать аналоги хуков и функций.
Использование хуков WooCommerce для расширения функционала
WooCommerce предоставляет множество action и filter хуков, позволяющих вмешиваться в процесс добавления товара в корзину, оформления заказа, оплаты и многое другое.
Например, чтобы добавить текст после кнопки "Добавить в корзину" на странице товара:
add_action('woocommerce_after_add_to_cart_button', 'wplite_custom_text_after_add_to_cart');
function wplite_custom_text_after_add_to_cart() {
echo '<p>Бесплатная доставка при заказе от 3000 руб.</p>';
}Или фильтр для изменения цены товара на лету:
add_filter('woocommerce_get_price_html', 'wplite_modify_price_display', 10, 2);
function wplite_modify_price_display($price_html, $product) {
if ($product->get_price() > 1000) {
$price_html .= ' <span style="color:red;"> - Специальная скидка!</span>';
}
return $price_html;
}Практические советы по работе с хуками WooCommerce
- Всегда префиксируйте свои функции, например, с помощью
wplite_, чтобы избежать конфликтов. - Используйте точные хуки для минимизации влияния на производительность.
- Тестируйте свои изменения в тестовой среде — WooCommerce активно обновляется, и хуки могут изменяться.
Полезные плагины для разработчиков WooCommerce
Для облегчения разработки и отладки рекомендуем установить несколько плагинов:
- WooCommerce Customizer — позволяет без кода менять тексты и кнопки магазина.
- Query Monitor — мощный инструмент для отладки запросов и хуков в WordPress и WooCommerce.
- WP Crontrol — помогает управлять и отлаживать cron-задачи, что важно для автоматизации WooCommerce.
- Code Snippets — удобный плагин для добавления пользовательских функций без правки файлов темы.
Эти инструменты облегчат вашу работу и помогут быстрее находить и исправлять ошибки.
Заключение: интеграция WooCommerce-функций в кастомные решения
Использование встроенных функций WooCommerce предоставляет мощные возможности для создания уникальных интернет-магазинов и расширения стандартного функционала. Важно понимать, как работают объекты товаров, корзины и заказов, а также уметь применять хуки для тонкой настройки поведения магазина.
Приведенные примеры кода можно использовать как основу для собственных плагинов и тем. Регулярное изучение документации WooCommerce и практика помогут создавать надежные и эффективные решения.