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, хуков и фильтров для создания собственных расширений. Разработка отдельных плагинов вместо изменения ядра системы упрощает сопровождение проекта, обеспечивает совместимость с обновлениями и делает интернет-магазин более надежным и масштабируемым.
Метки: WooCommerce, WordPress
