Посібник зі створення власних додатків для платформи WooCommerce: як створити свій унікальний інтернет-магазин

Читання за 4 хвилини.
2026-03-20
2026-06-04
2,731
Я заробляю комісію, коли ви робите покупки за посиланнями нижче, без додаткових витрат для вас.

У сучасному конкурентному середовищі електронної комерції стандартний магазин на платформі WooCommerce часто не може задовольнити всі бізнес-вимоги. Це стосується як індивідуальних процесів оплати, так і спеціальних правил розрахунку вартості доставки, а також глибокої інтеграції з третіми системами. У таких випадках необхідно розширювати основні функції магазину. Саме тут і проявляється цінність розробки власних плагінів. Шляхом створення власних плагінів можна оптимізувати роботу м WooCommerce За допомогою плагінів ви отримуєте повний контроль над процесом покупок, здатні створити унікальний досвід для клієнтів та побудувати неперевершені бар’єри на шляху конкуренції.

Налаштування середовища розробки плагінів для WordPress (WooCommerce)

Перед початком будь-яких робіт з розробки стабільне та ізольоване локальне середовище для розробки є абсолютно необхідним. Це не лише забезпечує захист ваших даних, що знаходяться в мережі, але й полегшує процес налагодження

Створення локального середовища для роботи з WordPress

Рекомендується використовувати такі інструменти, як Local by Flywheel, XAMPP чи MAMP, для швидкого налаштування локального середовища. Переконайтеся, що ваше середовище відповідає всім необхідним вимогам. WooCommerce Мінімальні вимоги: PHP 7.2 або вища версія, MySQL 5.6 або вища версія, а також найновіша версія WordPress. Після встановлення WordPress встановіть та активуйте необхідні плагіни з офіційного каталогу плагінів. WooCommerce Використання плагінів та проходження посібника з їхнього початкового налаштування, а також імпорт прикладних даних будуть дуже корисними для розробки.

Рекомендуємо до прочитання. Повний посібник з розробки та оптимізації продуктивності електронних магазинів на платформі WooCommerce

Створення базової структури плагіна

1 WooCommerce Цей плагін, насамперед, є стандартним плагіном для WordPress. wp-content/plugins/ Створіть нову папку у каталозі, наприклад… my-custom-woocommerceУ цьому папці створіть основний файл плагіна, який зазвичай називається самою назвою плагіна. my-custom-woocommerce.php

UltaHost – хостинг для сайтів, побудованих на платформі WordPress
Гарантія повернення грошей протягом 30 днів, необмежена пропускна здатність мережі та доступ до баз даних, безкоштовний захист від DDoS-атак; знижка 50% при покупці на термін 3 роки (варіанти об’ємів трафіку: 4 ТБ/5

Цей головний файл має містити стандартну інформацію про заголовок плагіна для WordPress. Ось приклад базового коду:

<?php
/**
 * Plugin Name: My Custom WooCommerce
 * Plugin URI:  https://yourwebsite.com/
 * Description: 为 WooCommerce 商店添加自定义功能。
 * Version:     1.0.0
 * Author:      您的名字
 * Author URI:  https://yourwebsite.com/
 * License:     GPL v2 or later
 * Text Domain: my-custom-woocommerce
 * Domain Path: /languages
 * WC requires at least: 5.0.0
 * WC tested up to: 8.0.0
 */

// 防止直接访问
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

// 检查 WooCommerce 是否已激活
if ( ! in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
    add_action( 'admin_notices', function() {
        ?>
        <div class="notice notice-error">
            <p>“Плагін ”My Custom WooCommerce“ вимагає, щоб система WooCommerce була встановлена та активована.</p>
        </div>
        &lt;?php
    } );
    return;
}

Ключовим моментом є використання… WC requires at leastWC tested up to Заголовкова інформація використовується для оголошення та визначення параметрів. WooCommerce Перевіряти сумісність та виконувати відповідні перевірки в коді. WooCommerce Чи було активація виконана?

Ключові методи розширення: кроки та фільтри-хаки (Core extension methods: Actions and filter hooks)

WooCommerce Сила цього інструменту полягає у його надзвичайно розширюваній системі хуків (hooks). Розуміння та вміле використання хуків дій (Actions) та хуків фільтрів (Filters) є ключовими елементами для кастомізованого розробництва.

Використовуйте дієві хаки (action hooks) для втручання у процес.

Акційні хаки (action hooks) дозволяють вам… WooCommerce Виконуйте свій власний код у певний момент часу. Наприклад, ви можете хотіти виконати яку-небудь користувацьку дію (наприклад, виклик зовнішнього API) після того, як користувач здійснить замовлення.

Рекомендуємо до прочитання. Приклад розробки плагіна для WordPress: створення вашого першого функціонального плагіна з нуля.

Ви можете використати woocommerce_thankyou Хук виконується на сторінці подяки за замовлення. Або можна використовувати більш універсальний підхід. woocommerce_checkout_order_processedВоно активується після завершення обробки замовлення.

add_action( 'woocommerce_checkout_order_processed', 'my_custom_order_action', 10, 3 );

function my_custom_order_action( $order_id, $posted_data, $order ) {
    // 获取订单对象(如果未提供)
    if ( ! $order instanceof WC_Order ) {
        $order = wc_get_order( $order_id );
    }

// 执行您的自定义逻辑,例如记录日志或发送请求
    $logger = wc_get_logger();
    $logger->info( '订单 #' . $order_id . ' 已创建,开始执行自定义任务。', array( 'source' => 'my-custom-plugin' ) );

// 调用外部 API 示例(伪代码)
    // $response = wp_remote_post( 'https://api.example.com/notify', $args );
}

Використання фільтрів та хуків для модифікації даних

Фільтрові хаки (filter hooks) дозволяють вам вносити зміни у функціонування системи. WooCommerce Дані, які передаються. Наприклад, ви хочете додати фіксовану комісію до цін усіх товарів.

Ви можете використати woocommerce_product_get_price Фільтри. Цей механізм дуже потужний, але його слід використовувати обережно, оскільки він впливає на відображення всіх цін.

hosting.com Віртуальний хостинг
Висока продуктивність завдяки процесорам AMD EPYC, SSD-накопичувачам NVMe і технології LiteSpeed, цілодобова експертна підтримка, розширені заходи безпеки, включаючи SSL, грубу силу, захист від шкідливих програм і DDoS, економія до 73%.
add_filter( 'woocommerce_product_get_price', 'my_custom_price_adjustment', 10, 2 );

function my_custom_price_adjustment( $price, $product ) {
    // 只在前端购物车和商品页面应用,避免影响后台
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) {
        return $price;
    }

// 假设增加 5 元手续费
    $fee = 5;
    $new_price = $price + $fee;

return $new_price;
}

Користувацькі типи товарів та їх зберігання даних

WooCommerce За замовчуванням підтримуються прості товари та товари з змінними параметрами. Однак іноді може знадобитися створити нові типи товарів, наприклад, “товари для бронювання” чи “товари послугового характеру”.

Зареєструвати новий тип товару

Створення нового типу товару вимагає кількох кроків. Спочатку потрібно зареєструвати цей тип. Це зазвичай відбувається на відповідному сайті чи в системі управління товарними категоріями. init Дія або завантаження додатку виконується під час його запуску.

add_action( 'init', 'register_my_custom_product_type' );

function register_my_custom_product_type() {
    class WC_Product_Custom extends WC_Product {
        public function __construct( $product ) {
            parent::__construct( $product );
            $this->product_type = 'custom';
        }

// 您可以在这里重写父类方法,或添加新方法
        public function get_type() {
            return 'custom';
        }

// 示例:自定义“添加到购物车”按钮文本
        public function add_to_cart_text() {
            return __( '预约服务', 'my-custom-woocommerce' );
        }
    }
}

Потім вам потрібно буде додати цей тип до списку варіантів вибору типів товарів за допомогою фільтра.

Рекомендуємо до прочитання. Легке створення власних сторінок товарів для платформи WooCommerce: від початківців до досвідчених користувачів

add_filter( 'product_type_selector', 'add_custom_product_type_to_dropdown' );

function add_custom_product_type_to_dropdown( $types ) {
    $types['custom'] = __( '自定义服务', 'my-custom-woocommerce' );
    return $types;
}

Додати власні поля до товару

Для нових типів продуктів зазвичай потрібні додаткові поля даних. Це можна досягти шляхом… WooCommerce Дані про товари реалізуються за допомогою блоку інформації Metabox. woocommerce_product_options_general_product_data Додайте поля до дії та використовуйте їх. woocommerce_process_product_meta Зберігайте ці дії.

add_action( 'woocommerce_product_options_general_product_data', 'add_custom_product_fields' );

function add_custom_product_fields() {
    global $product_object;

echo '<div class="options_group show_if_custom">'; // `show_if_custom` 仅对“custom”类型显示

woocommerce_wp_text_input( array(
        'id'          =&gt; '_service_duration',
        'label'       =&gt; __( '服务时长 (小时)', 'my-custom-woocommerce' ),
        'desc_tip'    =&gt; true,
        'description' =&gt; __( '请输入完成此服务预计需要的小时数。', 'my-custom-woocommerce' ),
        'type'        =&gt; 'number',
        'custom_attributes' =&gt; array(
            'step' =&gt; '0.5',
            'min'  =&gt; '0.5'
        )
    ) );

echo '</div>';
}

// 保存字段
add_action( 'woocommerce_process_product_meta', 'save_custom_product_fields' );

function save_custom_product_fields( $post_id ) {
    $product = wc_get_product( $post_id );
    if ( $product-&gt;get_type() === 'custom' ) {
        $duration = isset( $_POST['_service_duration'] ) ? sanitize_text_field( $_POST['_service_duration'] ) : '';
        $product-&gt;update_meta_data( '_service_duration', $duration );
        $product-&gt;save_meta_data();
    }
}

Взаємодія з кошиком покупок та процесом оформлення покупки

Кошик для покупок та процес оформлення покупки є ключовими елементами електронної комерції.WooCommerce Тут надано велику кількість хуків для налаштувань.

Міжсерверний віртуальний хостинг
Віртуальний хостинг $2.50 USD на місяць, перший місяць $0.1 USD за промокодом tryinterserver, 461 скрипт хмарних додатків, встановлення в один клік.

Зміна поведінки елементів кошика покупок

Ви можете це зробити через… woocommerce_add_cart_item_data Фільтри додають користувацькі дані під час додавання товарів до кошика. Наприклад, до товарів категорії “Користувацькі послуги” може бути додана дата запису на прийом.

add_filter( 'woocommerce_add_cart_item_data', 'add_custom_data_to_cart_item', 10, 3 );

function add_custom_data_to_cart_item( $cart_item_data, $product_id, $variation_id ) {
    $product = wc_get_product( $product_id );
    if ( $product->get_type() === 'custom' && isset( $_POST['appointment_date'] ) ) {
        $cart_item_data['appointment_date'] = sanitize_text_field( $_POST['appointment_date'] );
        // 确保每个有不同预约日期的商品都被视为独立项目
        $cart_item_data['unique_key'] = md5( microtime() . rand() );
    }
    return $cart_item_data;
}

Потім ви можете скористатися цим. woocommerce_get_item_data Фільтри відображають ці користувацькі налаштування на сторінках кошика та оформлення покупки.

Користувацькі поля для оформлення платежу

Додавання або зміна полів для оформлення платежу є дуже поширеною практикою. woocommerce_checkout_fields Фільтри можна легко реалізувати.

add_filter( 'woocommerce_checkout_fields', 'add_custom_checkout_field' );

function add_custom_checkout_field( $fields ) {
    $fields['billing']['billing_custom_vat'] = array(
        'label'       => __( '增值税号', 'my-custom-woocommerce' ),
        'placeholder' => _x( '请输入您的公司税号', 'placeholder', 'my-custom-woocommerce' ),
        'required'    => false, // 根据业务需求调整
        'class'       => array( 'form-row-wide' ),
        'clear'       => true,
        'priority'    => 35, // 控制字段顺序
    );
    return $fields;
}

Щоб зберегти значення цього поля в замовленні, необхідно використати відповідні функції системи управління замовленнями. woocommerce_checkout_update_order_meta Дія.

add_action( 'woocommerce_checkout_update_order_meta', 'save_custom_checkout_field' );

function save_custom_checkout_field( $order_id ) {
    if ( ! empty( $_POST['billing_custom_vat'] ) ) {
        update_post_meta( $order_id, '_billing_custom_vat', sanitize_text_field( $_POST['billing_custom_vat'] ) );
    }
}

підсумок

WooCommerce Користувацьке налаштування та розробка плагінів є систематичним процесом, який починається з розуміння їхньої архітектури. Від створення правильного середовища розробки та плану плагіна, що відповідає стандартам, до глибокого вивчення системи зв’язків між компонентами плагіна (дії та фільтри) з метою втручання чи модифікації основних процесів – кожен крок є основою для реалізації унікальних функцій. Шляхом створення власних типів товарів та метаполів ви можете розширити модель даних для задоволення складних бізнес-завдань. Крім того, розумне додавання інтеракцій та даних під час процесів кошика покупок та оформлення замовлень дозволяє покращити як користувацький досвід, так і ефективність операцій. Важливо завжди дотримуватися найкращих практик: ретельно тестувати код, заб WooCommerce Рекомендується також оновлювати сам основний код WordPress, щоб гарантувати стабільність, ефективність та довготривалий успіх ваших розроблених плагінів.

Часті запитання

Які необхідні попередні знання для розробки плагінів для системи WooCommerce?

Розробка плагінів для WooCommerce вимагає міцних знань PHP-програмування та ознайомлення з концепціями об’єктно-орієнтованого програмування (OOP). Крім того, необхідно глибоко розуміти основні механізми WordPress, включаючи систему хуків (дії та фільтри), можливості налаштування власних типів статей, роботу з метаданими, а також стандартну структуру плагінів та тем. Знання базових мов програмування HTML, CSS та JavaScript також допоможуть у створенні коректної фронтенд-інтерфейси.

Як налагодити проблеми у власному додатку для WooCommerce?

Насамперед, переконайтеся, що в wp-config.php Файл увімкнений. WP_DEBUGWP_DEBUG_LOGПо-перше, необхідно записувати помилки у файл журналів. По-друге, слід повною мірою використовувати всі можливості для аналізу цих помилок та вжиття відповідних заходів щодо їх усунення. WooCommerce Вбудована система журналівведення… wc_get_logger() Функції записують інформацію у ключових моментах виконання програми. Для виявлення проблем з фронтендом використовуйте інструменти розробника браузера (консоль та панель мережевих запитів). Крім того, можна на час вимкнути інші додатки та перейти на стандартний тематичний стиль інтерфейсу, щоб виключити можливі конфлі

Я змінив фільтри для відображення цін, але чому ціни товарів у списку на серверній стороні також змінилися?

Це досить поширена проблема. Багато фільтрів, пов’язаних із цінами, впливають як на фронтенд, так і на бекенд. Щоб уникнути цього, необхідно в функціях фільтрів використовувати умовні перевірки для обмеження їхньої дії. Зазвичай для цього використовуються спеціаль is_admin() && ! defined( 'DOING_AJAX' ) Перевіримо, чи ми знаходимося на інтерфейсі адміністративного керування, а також чи не виконується жодних AJAX-запитів (адже операції, такі як оновлення кошика покупок, виконуються за допомогою AJAX та вимагають обчислення цін). У попередніх прикладах ми вже показували, як це реалізувати.

Як виправити ситуацію, коли самостійно визначений тип товару відображається в замовленні як “простий товар”?

Це тому, що… WooCommerce Під час зберігання знімків товарів у замовленні ваші власні типи товарів можуть не бути правильно ідентифіковані. Вам необхідно переконатися, що інформація про тип товару передається коректно під час додавання його до кошика. Перевірте це. WC_Product_Custom Чи правильно клас успадкував потрібні властивості/методи? WC_Product Також було встановлено (set). $this->product_typeКрім того, під час отримання товарів з замовлення…WooCommerce Можливо, буде створений базовий екземпляр (об’єкт) цього класу. WC_Product Об’єкти. Для того щоб гарантувати їх правильне інстанціювання, вам може знадобитися використати певні методи або інструменти. woocommerce_order_get_items Фільтри використовуються для мапування ваших власних типів даних.

Як гарантувати, що мій власний плагін буде сумісним із майбутніми оновленнями системи WooCommerce?

Ключ до підтримки сумісності – це постійне узгодження своїх практик із офіційними стандартами та підходами до розробки. Завжди використовуйте офіційні інструменти, методології та рекомендації, щоб гарантувати правиль WooCommerce Використовуйте відкриті API та механізми зв’язку („hooks“) для взаємодії з системою; уникайте прямого змінення основних файлів чи використання невідкритих класів та методів. У інформації про плагін обов’язково точно вказуйте, з яким WooCommerce Версія (Version)WC tested up toРегулярно… WooCommerce Тестування проводиться на тестовій або найновішій версії продукту. Слідкуйте за новинами. WooCommerce Офіційний блог розробників та журнал оновлень допоможуть вам дізнатися про функції, які будуть вилучені з продукту, а також про нові API.