Как использовать функции WooCommerce в WordPress для разработки

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 и практика помогут создавать надежные и эффективные решения.

Как удалить старые и неиспользуемые мета-поля в WordPress
09.04.2026
Как использовать REST API для управления пользователями в WordPress
28.03.2026
Оптимизация загрузки картинок в WordPress без потери качества
13.12.2025
Как автоматизировать удаление неактивных пользователей в WordPress
28.04.2026
Как избежать проблемы с отслеживанием изменений в WordPress
25.03.2026