WooCommerce — одна из самых популярных платформ для электронной коммерции на WordPress, и умение эффективно работать с её REST API открывает широкие возможности для автоматизации и интеграции. В этой статье мы подробно разберем, как использовать WooCommerce REST API для управления заказами, включая создание, чтение, обновление и удаление заказов. Также рассмотрим примеры кода и лучшие практики.
Что такое WooCommerce REST API и зачем он нужен
WooCommerce REST API предоставляет программный интерфейс для взаимодействия с данными интернет-магазина — продуктами, заказами, клиентами и т.д. Основное преимущество API — возможность управлять магазином из внешних приложений или создавать собственные админ-инструменты без необходимости заходить в админ-панель WordPress.
С помощью REST API можно:
- Автоматически создавать и обновлять заказы;
- Получать список заказов с фильтрацией по статусу, дате, клиенту;
- Обрабатывать оплату и менять статусы заказов программно;
- Интегрировать магазин с CRM, ERP, системами аналитики;
- Создавать кастомные отчеты и уведомления.
Для доступа к API необходимо получить ключи (consumer key и consumer secret) в настройках WooCommerce, а также убедиться, что используются правильные права доступа.
Основные методы работы с заказами через WooCommerce REST API
API использует стандартные HTTP-методы: GET для получения данных, POST для создания, PUT/PATCH для обновления и DELETE для удаления. Рассмотрим основные запросы с примерами.
Получение списка заказов
Чтобы получить заказы, отправьте GET-запрос на /wp-json/wc/v3/orders с параметрами фильтрации. Пример с использованием PHP и библиотеки Guzzle:
function wphelper_get_orders() {
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://your-site.ru/wp-json/wc/v3/orders', [
'auth' => ['consumer_key', 'consumer_secret'],
'query' => [
'status' => 'processing',
'per_page' => 10
]
]);
$orders = json_decode($response->getBody(), true);
return $orders;
}
Функция возвращает массив заказов со статусом processing, ограниченный 10 элементами.
Создание нового заказа
Для создания заказа нужно отправить POST-запрос с данными клиента, товарами и оплатой. Пример:
function wphelper_create_order() {
$client = new \GuzzleHttp\Client();
$data = [
'payment_method' => 'bacs',
'payment_method_title' => 'Direct Bank Transfer',
'set_paid' => true,
'billing' => [
'first_name' => 'Иван',
'last_name' => 'Иванов',
'email' => 'ivan@example.com',
'phone' => '1234567890'
],
'line_items' => [
[
'product_id' => 123,
'quantity' => 2
]
]
];
$response = $client->request('POST', 'https://your-site.ru/wp-json/wc/v3/orders', [
'auth' => ['consumer_key', 'consumer_secret'],
'json' => $data
]);
return json_decode($response->getBody(), true);
}
Обратите внимание, что product_id нужно заменить на существующий ID товара из вашего магазина.
Обновление статуса заказа
Для смены статуса заказа используйте PUT-запрос. Например, чтобы пометить заказ как выполненный:
function wphelper_update_order_status($order_id) {
$client = new \GuzzleHttp\Client();
$data = [
'status' => 'completed'
];
$response = $client->request('PUT', "https://your-site.ru/wp-json/wc/v3/orders/{$order_id}", [
'auth' => ['consumer_key', 'consumer_secret'],
'json' => $data
]);
return json_decode($response->getBody(), true);
}
Удаление заказа
Удаление производится через DELETE-запрос. Пример:
function wphelper_delete_order($order_id) {
$client = new \GuzzleHttp\Client();
$response = $client->request('DELETE', "https://your-site.ru/wp-json/wc/v3/orders/{$order_id}", [
'auth' => ['consumer_key', 'consumer_secret'],
'query' => ['force' => true]
]);
return json_decode($response->getBody(), true);
}
Обработка ошибок и безопасность при работе с WooCommerce REST API
При работе с API важно проверять ответы сервера и корректно обрабатывать ошибки, чтобы избежать сбоев в работе интеграций. Например, в PHP можно ловить исключения Guzzle:
try {
// Запрос к API
} catch (\GuzzleHttp\Exception\RequestException $e) {
error_log('Ошибка API: ' . $e->getMessage());
}
Для безопасности:
- Используйте HTTPS для всех запросов;
- Ограничьте права доступа ключей API только необходимыми операциями;
- Регулярно меняйте ключи;
- Используйте IP-фильтрацию, если возможно.
Полезные плагины для расширения возможностей WooCommerce REST API
Иногда стандартных возможностей REST API недостаточно. Вот несколько плагинов, которые помогут расширить функционал:
- Clearfy Pro — оптимизация и расширение API;
- WPCommunity — интеграция с социальными функциями;
- WPRemark — расширенные отзывы и рейтинги с API.
Как протестировать и отладить запросы к WooCommerce REST API
Для отладки удобно использовать такие инструменты:
- Postman — визуальный клиент для тестирования REST API запросов;
- cURL — командная строка для отправки HTTP-запросов;
- Плагины WordPress для логирования REST API запросов.
Например, запрос на получение заказов через cURL:
curl https://your-site.ru/wp-json/wc/v3/orders \
-u consumer_key:consumer_secret \
-G --data-urlencode "status=processing" --data-urlencode "per_page=5"
При тестах обращайте внимание на статус ответа, тело и заголовки для правильной настройки взаимодействия.
Заключение
Использование WooCommerce REST API для управления заказами позволяет автоматизировать множество рутинных задач, интегрировать магазин с внешними сервисами и создавать удобные клиентские инструменты. Важно внимательно настраивать права доступа, обрабатывать ошибки и тестировать запросы. Приведенные примеры кода помогут быстро начать работу с API и расширят возможности вашего интернет-магазина.