Как использовать WooCommerce REST API для управления заказами в WordPress

Работа с заказами — одна из ключевых задач при создании интернет-магазина на базе WordPress с плагином WooCommerce. В этой статье разберем, как использовать WooCommerce REST API для автоматизации управления заказами, получения данных и изменения их статусов. Это особенно полезно для интеграции с внешними сервисами, мобильными приложениями и внутренними инструментами.

Что такое WooCommerce REST API и зачем его использовать

WooCommerce REST API — это интерфейс для взаимодействия с данными магазина через HTTP-запросы. Он позволяет извлекать информацию о товарах, заказах, клиентах, изменять их, создавать новые сущности и многое другое.

Использовать API удобно, если нужно:

  • Автоматизировать обработку заказов вне панели WordPress;
  • Интегрировать магазин с CRM, ERP или внешними системами;
  • Создавать мобильные приложения с доступом к каталогу и заказам;
  • Анализировать данные о продажах и клиентах в реальном времени.

Для работы с API требуется аутентификация — обычно используется ключ и секрет, которые можно получить в настройках WooCommerce.

Настройка доступа к WooCommerce REST API

Чтобы начать работу, нужно создать ключи доступа:

  1. В админке WordPress зайдите в WooCommerce → Настройки → Продвинутые → REST API.
  2. Нажмите «Добавить ключ» и укажите описание, пользователя и уровень доступа (чтение, запись или полный).
  3. Сохраните ключи — они понадобятся для запросов.

Безопасность очень важна, поэтому храните ключи в надежном месте и используйте 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.

Автоматическое обновление данных в реальном времени в WordPress
01.12.2025
Как установить ограничение на загрузку файлов в WordPress
02.01.2026
Как создать автоматическое сохранение поста через AJAX в WordPress
14.01.2026
Как создать динамический шорткод в WordPress с примерами кода
20.11.2025
Как создать настройки для своего плагина WordPress с примерами кода
24.11.2025