Как создать свой плагин для WooCommerce: пошаговое руководство

WooCommerce — одна из самых популярных платформ для создания интернет-магазинов на базе WordPress. Иногда стандартного функционала недостаточно, и приходится создавать собственные расширения в виде плагинов. В этом материале мы подробно разберём, как создать свой плагин для WooCommerce с нуля, какие важные моменты учитывать и приведём конкретные примеры кода.

Что нужно знать, прежде чем создавать плагин для WooCommerce

Перед началом разработки важно понимать архитектуру WooCommerce и особенности его интеграции с WordPress. WooCommerce базируется на стандартных хуках и фильтрах WordPress, но добавляет свои собственные, которые позволяют гибко настраивать разные этапы работы магазина — от отображения товара до оформления заказа.

Также необходимо убедиться, что у вас есть рабочая среда с установленным WordPress и WooCommerce, а также базовые знания PHP и структуры плагинов WordPress.

Основные моменты, которые следует учесть:

  • Плагин должен корректно работать с последней версией WooCommerce.
  • Используйте префиксы в названиях функций и классов, чтобы избежать конфликтов (например, wpnote_wc_).
  • Следите за безопасностью: экранируйте вывод и проверяйте входящие данные.
  • Для расширения функционала используйте хуки WooCommerce.

Структура простого плагина для WooCommerce

Минимальная структура плагина — это папка в директории wp-content/plugins с основным файлом плагина. Для нашего примера создадим папку wpnote-woocommerce-extension и в ней файл wpnote-woocommerce-extension.php.

В начале файла добавим стандартный заголовок плагина:

<?php
/**
 * Plugin Name: WPNote WooCommerce Extension
 * Description: Пример собственного расширения WooCommerce
 * Version: 1.0
 * Author: WPNote
 */

Теперь можно добавить базовые хуки для подключения функций и действий.

Подключение пользовательского функционала

Например, добавим простую функцию, которая выводит сообщение на странице товара.

function wpnote_wc_show_custom_message() {
    echo '<p style="color: green; font-weight: bold;">Это дополнительное сообщение для покупателя.</p>';
}
add_action('woocommerce_single_product_summary', 'wpnote_wc_show_custom_message', 25);

Здесь мы используем хук woocommerce_single_product_summary, чтобы вывести текст после описания товара.

Пример: добавление пользовательского поля в карточку товара

Одна из частых задач — добавить свои поля к товарам. Рассмотрим, как добавить текстовое поле «Дополнительная информация» в админку товара и вывести его на странице.

Добавление поля в админке

Для добавления поля используем хук woocommerce_product_options_general_product_data:

function wpnote_wc_add_custom_general_fields() {
    woocommerce_wp_text_input(
        array(
            'id' => 'wpnote_extra_info',
            'label' => __('Дополнительная информация', 'wpnote'),
            'placeholder' => 'Введите дополнительную информацию',
            'desc_tip' => 'true',
            'description' => __('Это поле отображается на странице товара.', 'wpnote')
        )
    );
}
add_action('woocommerce_product_options_general_product_data', 'wpnote_wc_add_custom_general_fields');

Сохранение значения поля

Чтобы сохранить введённые данные при сохранении товара, используем хук woocommerce_process_product_meta:

function wpnote_wc_save_custom_general_fields($post_id) {
    $extra_info = isset($_POST['wpnote_extra_info']) ? sanitize_text_field($_POST['wpnote_extra_info']) : '';
    update_post_meta($post_id, 'wpnote_extra_info', $extra_info);
}
add_action('woocommerce_process_product_meta', 'wpnote_wc_save_custom_general_fields');

Вывод пользовательского поля на странице товара

Чтобы вывести сохранённое поле на фронтенде, применим хук woocommerce_single_product_summary:

function wpnote_wc_display_custom_field() {
    global $product;
    $extra_info = get_post_meta($product->get_id(), 'wpnote_extra_info', true);
    if (!empty($extra_info)) {
        echo '<div class="wpnote-extra-info" style="margin-top:15px; font-style:italic;">' . esc_html($extra_info) . '</div>';
    }
}
add_action('woocommerce_single_product_summary', 'wpnote_wc_display_custom_field', 35);

Таким образом, мы расширили карточку товара своим полем, которое удобно редактировать и выводить.

Расширение функционала: добавление пользовательской цены для определённых пользователей

Допустим, нужно показывать специальные цены для определённой роли пользователей, например для оптовиков.

Создание функции для изменения цены

Используем фильтр woocommerce_get_price, чтобы динамически менять цену:

function wpnote_wc_custom_price_for_wholesalers($price, $product) {
    if (current_user_can('wholesaler')) { // допустим, роль "wholesaler"
        $price = $price * 0.8; // скидка 20%
    }
    return $price;
}
add_filter('woocommerce_get_price', 'wpnote_wc_custom_price_for_wholesalers', 10, 2);

Важно предварительно создавать и назначать нужную роль пользователям. Этот пример показывает, как легко интегрировать условную логику в ценообразование.

Полезные плагины для разработки и отладки плагинов WooCommerce

Чтобы работать эффективнее, рекомендую использовать следующие инструменты:

  • Query Monitor — для отладки запросов и хуков WordPress.
  • WooCommerce Admin — для расширенного управления магазином.
  • WP Crontrol — для просмотра и управления планировщиком задач.
  • Debug Bar — добавляет панель отладки в админку.

Они помогут быстро выявлять проблемы и оптимизировать код.

Советы по безопасности и производительности

При разработке плагина для WooCommerce важно соблюдать несколько правил:

  • Используйте sanitize_text_field и другие функции очистки для входящих данных.
  • Экранируйте вывод через esc_html, esc_attr и аналогичные функции.
  • Минимизируйте количество запросов к базе данных, кешируйте результаты, если это возможно.
  • Следите за совместимостью с последними версиями WooCommerce и WordPress.

Это обеспечит стабильную работу вашего расширения и безопасность пользователей.

Итоговые рекомендации для создания плагина WooCommerce на wpnote.ru

Создание собственного плагина — отличный способ адаптировать магазин под свои нужды. Начните с простых функций, постепенно добавляя сложный функционал, всегда тестируя изменения. Используйте префиксы wpnote_wc_ для всех функций и классов, чтобы избежать конфликтов.

Обязательно проверяйте совместимость с WooCommerce и WordPress, не забывайте про безопасность и производительность. Надеюсь, этот подробный разбор поможет вам создать качественный и полезный плагин.

Как добавить поддержку PHP 8.2 в WordPress и решить проблемы с совместимостью
20.02.2026
WooCommerce: как исправить проблемы с изменением цены при выборе вариаций товара
22.05.2026
Как использовать хук pre_get_posts для фильтрации контента в WordPress
17.03.2026
WooCommerce: автоматическое изменение цены при смене атрибутов товара
06.05.2026
Как отладить конфликты PHP в WordPress с помощью Xdebug
17.02.2026