Работа с заказами — одна из ключевых задач при создании интернет-магазина на базе WordPress с плагином WooCommerce. В этой статье разберем, как использовать WooCommerce REST API для автоматизации управления заказами, получения данных и изменения их статусов. Это особенно полезно для интеграции с внешними сервисами, мобильными приложениями и внутренними инструментами.
Что такое WooCommerce REST API и зачем его использовать
WooCommerce REST API — это интерфейс для взаимодействия с данными магазина через HTTP-запросы. Он позволяет извлекать информацию о товарах, заказах, клиентах, изменять их, создавать новые сущности и многое другое.
Использовать API удобно, если нужно:
- Автоматизировать обработку заказов вне панели WordPress;
- Интегрировать магазин с CRM, ERP или внешними системами;
- Создавать мобильные приложения с доступом к каталогу и заказам;
- Анализировать данные о продажах и клиентах в реальном времени.
Для работы с API требуется аутентификация — обычно используется ключ и секрет, которые можно получить в настройках WooCommerce.
Настройка доступа к WooCommerce REST API
Чтобы начать работу, нужно создать ключи доступа:
- В админке WordPress зайдите в WooCommerce → Настройки → Продвинутые → REST API.
- Нажмите «Добавить ключ» и укажите описание, пользователя и уровень доступа (чтение, запись или полный).
- Сохраните ключи — они понадобятся для запросов.
Безопасность очень важна, поэтому храните ключи в надежном месте и используйте HTTPS для всех запросов.
Пример базового запроса на получение заказов
Для запроса заказов используйте следующий пример на PHP с использованием библиотеки Guzzle:
require 'vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client(['base_uri' => 'https://your-site.ru/wp-json/wc/v3/']);
$response = $client->request('GET', 'orders', [
'auth' => ['consumer_key', 'consumer_secret']
]);
$orders = json_decode($response->getBody(), true);
print_r($orders);Этот код вернет массив заказов с основными полями, такими как ID, статус, сумма, товары и данные покупателя.
Изменение статуса заказа через API
Часто нужно обновить статус заказа, например, перевести его в "выполнен" после отправки товара. Делается это с помощью метода PUT:
$order_id = 123;
$response = $client->request('PUT', "orders/$order_id", [
'auth' => ['consumer_key', 'consumer_secret'],
'json' => ['status' => 'completed']
]);
$updated_order = json_decode($response->getBody(), true);
print_r($updated_order);Важно проверять успешность запроса и обрабатывать ошибки, например, если заказ не найден или доступ запрещен.
Автоматизация изменения статусов с помощью WPdemo_set_order_status
Для упрощения можно создать функцию, которая будет менять статус заказа через API:
function WPdemo_set_order_status($order_id, $status) {
$consumer_key = 'your_consumer_key';
$consumer_secret = 'your_consumer_secret';
$base_url = 'https://your-site.ru/wp-json/wc/v3/';
$client = new \GuzzleHttp\Client(['base_uri' => $base_url]);
try {
$response = $client->request('PUT', "orders/$order_id", [
'auth' => [$consumer_key, $consumer_secret],
'json' => ['status' => $status]
]);
return json_decode($response->getBody(), true);
} catch (\Exception $e) {
return ['error' => $e->getMessage()];
}
}Такую функцию можно использовать в своих плагинах или темах для интеграции с WooCommerce.
Фильтрация и пагинация заказов
API позволяет фильтровать заказы по статусу, дате, клиенту и другим параметрам. Например, получить все заказы со статусом "в ожидании":
$response = $client->request('GET', 'orders', [
'auth' => ['consumer_key', 'consumer_secret'],
'query' => ['status' => 'pending']
]);
$pending_orders = json_decode($response->getBody(), true);Также предусмотрена пагинация с параметрами per_page и page:
$response = $client->request('GET', 'orders', [
'auth' => ['consumer_key', 'consumer_secret'],
'query' => ['per_page' => 10, 'page' => 2]
]);<Это позволяет эффективно работать с большими объемами данных.
Пример вывода заказов на странице админки с пагинацией
Можно написать простой код в плагине или теме для вывода заказов с пагинацией:
function WPdemo_render_orders_page() {
$page = isset($_GET['paged']) ? intval($_GET['paged']) : 1;
$orders = WPdemo_get_orders(['per_page' => 10, 'page' => $page]);
echo '<table><tr><th>ID</th><th>Статус</th><th>Сумма</th></tr>';
foreach ($orders as $order) {
echo "<tr><td>{$order['id']}</td><td>{$order['status']}</td><td>{$order['total']}</td></tr>";
}
echo '</table>';
}
function WPdemo_get_orders($args = []) {
$consumer_key = 'your_consumer_key';
$consumer_secret = 'your_consumer_secret';
$base_url = 'https://your-site.ru/wp-json/wc/v3/';
$client = new \GuzzleHttp\Client(['base_uri' => $base_url]);
$query = [];
if (!empty($args['per_page'])) $query['per_page'] = $args['per_page'];
if (!empty($args['page'])) $query['page'] = $args['page'];
$response = $client->request('GET', 'orders', [
'auth' => [$consumer_key, $consumer_secret],
'query' => $query
]);
return json_decode($response->getBody(), true);
}Безопасность и ограничения WooCommerce REST API
При работе с API важно соблюдать рекомендации по безопасности:
- Используйте HTTPS для всех запросов.
- Не храните ключи в открытом доступе, особенно в публичных репозиториях.
- Ограничивайте права доступа ключей — давайте только необходимые.
- Обрабатывайте ошибки и исключения, чтобы избежать сбоев.
Также учитывайте, что API имеет ограничения по количеству запросов в минуту, чтобы избежать перегрузки сервера.
Использование плагина Clearfy Pro для управления безопасностью API
Плагин Clearfy Pro позволяет настроить фильтры доступа к API, ограничить ненужные эндпоинты и повысить безопасность магазина. Это особенно важно при активном использовании REST API.
Итог: практические советы и рекомендации
WooCommerce REST API — мощный инструмент для интеграции и автоматизации работы с заказами. Чтобы эффективно использовать его:
- Настройте ключи с правильными правами доступа;
- Используйте проверенные HTTP-клиенты, например, Guzzle;
- Обрабатывайте все возможные ошибки и исключения;
- Оптимизируйте запросы с помощью фильтров и пагинации;
- Обеспечьте безопасность, используя HTTPS и плагины типа Clearfy Pro;
- Пишите вспомогательные функции для повторно используемых операций, например, для смены статуса заказа.
Такой подход позволит создавать надежные и масштабируемые решения для управления интернет-магазином на WordPress.