WooCommerce REST API — мощный инструмент для интеграции вашего интернет-магазина с внешними сервисами, мобильными приложениями или кастомными решениями. В этой статье мы подробно разберём, как правильно включить REST API в WooCommerce, настроить права доступа, а также приведём примеры кода для выполнения основных операций.
Что такое WooCommerce REST API и зачем он нужен
REST API в WooCommerce позволяет получать, создавать, обновлять и удалять данные магазина через HTTP-запросы. Это открывает возможности для автоматизации, интеграций с CRM, ERP, мобильными приложениями и другими сервисами.
Основные преимущества использования REST API:
- Автоматизация управления товарами, заказами и клиентами.
- Интеграция с внешними системами в реальном времени.
- Возможность создания кастомных административных панелей и мобильных приложений.
Но для начала нужно убедиться, что REST API активирован и настроен правильно.
Как разрешить WooCommerce REST API в WordPress
По умолчанию REST API в WooCommerce включён, но для полноценной работы требуется создать API-ключи и настроить права доступа.
Создание API ключей в WooCommerce
Для генерации ключей:
- Зайдите в админ-панель WordPress.
- Перейдите в WooCommerce → Настройки → Дополнительно → REST API.
- Нажмите «Добавить ключ».
- Введите описание ключа (например, "Интеграция с CRM"), выберите пользователя и права доступа (чтение, запись или чтение/запись).
- Нажмите «Создать ключ», после чего сохраните сгенерированные Consumer Key и Consumer Secret — они нужны для аутентификации.
Важно: не передавайте ключи третьим лицам и храните их в безопасности.
Настройка прав доступа и безопасность
Рекомендуется выдавать минимально необходимые права. Например, если нужно только читать данные заказов, выберите права «Чтение». Для изменения данных — «Запись» или «Чтение/запись».
Также можно ограничить доступ по IP с помощью настроек сервера или плагинов безопасности для снижения риска несанкционированного доступа.
Примеры использования WooCommerce REST API с PHP
Далее рассмотрим примеры простейших запросов к WooCommerce REST API на PHP с использованием библиотеки wc-api-php. Если её нет, установите через Composer:
composer require automattic/woocommerceПример инициализации клиента и получения списка товаров:
<?php
require __DIR__ . '/vendor/autoload.php';
use Automattic\WooCommerce\Client;
$woocommerce = new Client(
'https://wpupload.ru', // URL вашего магазина
'ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', // Consumer Key
'cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', // Consumer Secret
[
'version' => 'wc/v3',
'query_string_auth' => true // Если требуется передавать ключи в URL
]
);
try {
$products = $woocommerce->get('products');
foreach ($products as $product) {
echo 'ID: ' . $product->id . ' - ' . $product->name . "\n";
}
} catch (Exception $e) {
echo 'Ошибка: ' . $e->getMessage();
}
?>Создание нового продукта через API
Пример кода для создания товара:
$data = [
'name' => 'Новый продукт от WPUpload',
'type' => 'simple',
'regular_price' => '299.99',
'description' => 'Описание продукта',
'short_description' => 'Краткое описание'
];
try {
$new_product = $woocommerce->post('products', $data);
echo 'Создан продукт с ID: ' . $new_product->id;
} catch (Exception $e) {
echo 'Ошибка при создании продукта: ' . $e->getMessage();
}Расширение функционала: создание кастомных REST API эндпоинтов в WordPress
Если стандартных эндпоинтов WooCommerce недостаточно, можно добавить свои. Например, для получения специальной информации о заказах.
Пример создания собственного эндпоинта
Добавьте следующий код в файл functions.php вашей темы или в кастомный плагин:
add_action('rest_api_init', function () {
register_rest_route('wpupload/v1', '/custom-orders/', [
'methods' => 'GET',
'callback' => 'wpupload_get_custom_orders',
'permission_callback' => function () {
return current_user_can('read');
},
]);
});
function wpupload_get_custom_orders(WP_REST_Request $request) {
$args = [
'limit' => 10,
'status' => 'completed'
];
$orders = wc_get_orders($args);
$result = [];
foreach ($orders as $order) {
$result[] = [
'id' => $order->get_id(),
'total' => $order->get_total(),
'date' => $order->get_date_created()->date('Y-m-d H:i:s')
];
}
return rest_ensure_response($result);
}Теперь запрос GET https://wpupload.ru/wp-json/wpupload/v1/custom-orders/ вернёт последние 10 завершённых заказов.
Полезные плагины для работы с WooCommerce REST API
Для удобства и расширения возможностей стоит обратить внимание на несколько плагинов:
- WooCommerce REST API Manager — позволяет управлять ключами и ограничивать доступ.
- WP OAuth Server — для настройки авторизации по OAuth 2.0, если нужен высокий уровень безопасности.
- Postman — не плагин, а инструмент для тестирования API-запросов вручную.
Эти инструменты помогут быстрее и безопаснее работать с API при интеграциях и разработке.
Советы по отладке и безопасности при работе с WooCommerce REST API
При работе с API часто возникают вопросы по авторизации, правам доступа и форматам данных. Вот несколько рекомендаций:
- Используйте HTTPS для всех запросов — это обязательное требование безопасности.
- Проверяйте права пользователя, под которым создаёте ключи, чтобы не допустить утечки данных.
- Отслеживайте логи запросов в WooCommerce и сервере для выявления проблем.
- Пишите обработчики ошибок и учитывайте лимиты API.
Соблюдение этих правил поможет избежать большинства ошибок и сделать интеграции стабильными.
Итоги
WooCommerce REST API — это гибкий и мощный инструмент для разработчиков, который позволяет расширять возможности интернет-магазина на WordPress. Правильная настройка, создание ключей, использование готовых библиотек и кастомных эндпоинтов открывают широкие горизонты для автоматизации и интеграций.
Используйте примеры из статьи как основу и адаптируйте под свои задачи для достижения наилучших результатов.