WooCommerce предоставляет полноценный REST API для управления товарами, заказами, покупателями и категориями. Это позволяет синхронизировать магазин с CRM, ERP, маркетплейсами и мобильными приложениями.

Получение товара

GET /wp-json/wc/v3/products/15

Создание товара

POST /wp-json/wc/v3/products

Обновление товара

PUT /wp-json/wc/v3/products/15

Удаление товара

DELETE /wp-json/wc/v3/products/15

Добавление собственного REST API

add_action('rest_api_init', function () {

    register_rest_route('myplugin/v1', '/products', array(
        'methods'  => 'GET',
        'callback' => 'my_products'
    ));

});

function my_products() {

    return array(
        'status' => 'success'
    );

}

Добавление собственного поля при оформлении заказа

add_filter(
'woocommerce_checkout_fields',
function($fields){

$fields['billing']['billing_inn']=array(

'label'=>'ИНН',

'required'=>false,

'class'=>array('form-row-wide')

);

return $fields;

});

Сохранение нового поля заказа

add_action(
'woocommerce_checkout_update_order_meta',
function($order_id){

if(isset($_POST['billing_inn'])){

update_post_meta(
$order_id,
'billing_inn',
sanitize_text_field($_POST['billing_inn'])
);

}

});

Вывод значения в административной панели

add_action(
'woocommerce_admin_order_data_after_billing_address',
function($order){

echo '

ИНН: ' .get_post_meta( $order->get_id(), 'billing_inn', true ).'

'; });

Добавление собственного статуса заказа

register_post_status('wc-production', array(

'label'=>'Производство',

'public'=>true

));

Добавление кнопки в административной панели

add_action(
'admin_notices',
function(){

echo '

Плагин работает успешно.

'; });

Логирование ошибок

$logger = wc_get_logger();

$logger->info(
'Товар обновлен',
array('source'=>'my-plugin')
);

Работа с журналом WooCommerce

Просмотреть журнал можно:

WooCommerce

↓

Статус

↓

Журналы

Поддержка мультиязычности

Все текстовые строки рекомендуется оборачивать в функции локализации.

__('Мой текст','my-plugin');
или
esc_html__('Сохранить','my-plugin');

Использование Composer

Для крупных проектов рекомендуется использовать Composer.

composer init

Добавление библиотеки:

composer require automattic/woocommerce

Автоматическая загрузка классов

require_once __DIR__ .
'/vendor/autoload.php';

Организация структуры собственного плагина

my-plugin/

├── assets/

├── css/

├── js/

├── includes/

├── admin/

├── public/

├── languages/

├── vendor/

├── templates/

└── my-plugin.php

Рекомендации по разработке

  • Не изменяйте файлы ядра WooCommerce.
  • Используйте только хуки и фильтры.
  • Все изменения оформляйте отдельным плагином.
  • Не храните настройки в файлах PHP.
  • Используйте API WordPress.
  • Всегда экранируйте вывод данных.
  • Проверяйте права пользователей.
  • Используйте nonce для обработки форм.
  • Соблюдайте стандарты кодирования WordPress.

Лучшие практики оптимизации

  • Используйте объектный кеш Redis.
  • Включите постоянный кеш страниц.
  • Минимизируйте количество активных плагинов.
  • Удаляйте неиспользуемые расширения.
  • Регулярно обновляйте WooCommerce.
  • Следите за совместимостью расширений.
  • Оптимизируйте изображения товаров.
  • Используйте CDN для статических файлов.
  • Контролируйте количество SQL-запросов.

Распространенные ошибки

Белый экран после установки плагина

Причины:

  • синтаксическая ошибка PHP;
  • несовместимая версия PHP;
  • конфликт с другим плагином.

Плагин не отображается

Проверьте:

  • наличие заголовка Plugin Name;
  • расположение файла;
  • права доступа к каталогу.

Фатальная ошибка после обновления WooCommerce

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

Не работают хуки

Убедитесь, что используется правильный хук и он подключается после загрузки WooCommerce.

add_action('plugins_loaded', function(){

    if (!class_exists('WooCommerce')) {
        return;
    }

});

Когда стоит писать собственный плагин

Разработка собственного расширения оправдана в следующих случаях:

  • необходима интеграция с CRM или ERP;
  • требуется нестандартная логика оформления заказа;
  • нужно добавить уникальные поля товара;
  • необходимо взаимодействие с внешним API;
  • готовые решения перегружены ненужным функционалом.

Заключение

Экосистема WooCommerce насчитывает тысячи бесплатных и коммерческих плагинов, позволяющих значительно расширить возможности интернет-магазина. С их помощью можно автоматизировать продажи, настроить доставку и оплату, интегрировать магазин с внешними сервисами, улучшить SEO и повысить производительность.

Если готовые решения не подходят, WooCommerce предоставляет мощный набор API, хуков и фильтров для создания собственных расширений. Разработка отдельных плагинов вместо изменения ядра системы упрощает сопровождение проекта, обеспечивает совместимость с обновлениями и делает интернет-магазин более надежным и масштабируемым.

Метки: ,