WooCommerce — один из самых популярных плагинов для электронной коммерции на WordPress. Для разработчиков часто возникает задача получать и обрабатывать данные заказов программно, чтобы реализовать кастомные отчеты, интеграции с CRM и другие бизнес-процессы.
В этой статье мы подробно разберем, как с помощью WPONE REST API можно безопасно и эффективно получать данные о заказах WooCommerce. Рассмотрим примеры запросов, обработку ответа и примеры кода на PHP и JavaScript.
Что такое WPONE REST API и его преимущества для работы с WooCommerce
WPONE REST API — это надстройка над стандартным REST API WordPress, которая добавляет удобные методы и расширения для упрощения разработки. В частности, для WooCommerce она позволяет:
- Получать данные заказов с расширенными фильтрами.
- Обрабатывать метаданные заказов.
- Предоставлять безопасный доступ с помощью токенов и nonce.
Использование WPONE REST API сокращает время разработки и снижает количество ошибок при работе с заказами.
Настройка доступа и аутентификация
Для работы с REST API WooCommerce требуется аутентификация. С WPONE REST API вы можете использовать OAuth 1.0a, Basic Auth или токены доступа, настроенные в вашем WordPress.
Например, для Basic Auth на PHP можно использовать следующий код для инициализации запроса:
$consumer_key = 'ck_xxxxxxxx';
$consumer_secret = 'cs_xxxxxxxx';
$api_url = 'https://your-site.ru/wp-json/wpone/v1/orders';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, "$consumer_key:$consumer_secret");
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);Такой запрос вернет список заказов с базовой информацией.
Получение заказов с фильтрацией и пагинацией
WPONE REST API поддерживает параметры фильтрации, позволяющие получить заказы по статусу, дате, клиенту и другим критериям. Это особенно полезно при большом количестве данных.
Пример запроса с фильтрацией по статусу и пагинацией:
GET https://your-site.ru/wp-json/wpone/v1/orders?status=processing&per_page=10&page=2В ответе вы получите вторую страницу заказов со статусом "processing".
Пример на PHP с использованием wp_remote_get:
function wpone_get_orders($status = 'processing', $per_page = 10, $page = 1) {
$url = add_query_arg([
'status' => $status,
'per_page' => $per_page,
'page' => $page
], 'https://your-site.ru/wp-json/wpone/v1/orders');
$response = wp_remote_get($url, [
'headers' => [
'Authorization' => 'Basic ' . base64_encode('ck_xxxxxxxx:cs_xxxxxxxx')
]
]);
if (is_wp_error($response)) {
return [];
}
$body = wp_remote_retrieve_body($response);
return json_decode($body, true);
}Обработка метаданных заказов и пользовательских полей
Заказы WooCommerce часто содержат пользовательские мета поля, например, данные доставки, дополнительные опции и т.п. WPONE REST API позволяет легко получать и обновлять эти данные.
Для получения метаданных в ответе на запрос заказа обратите внимание на раздел meta_data. Пример части JSON ответа:
{
"id": 1234,
"status": "completed",
"meta_data": [
{
"key": "_delivery_date",
"value": "2024-07-10"
},
{
"key": "_gift_wrap",
"value": true
}
]
}Для получения значений мета можно использовать вспомогательную функцию:
function wpone_get_order_meta($order, $key) {
foreach ($order['meta_data'] as $meta) {
if ($meta['key'] === $key) {
return $meta['value'];
}
}
return null;
}Пример кода для вывода списка заказов на фронтенде с помощью AJAX
Рассмотрим пример вывода заказов текущего пользователя на странице. Для этого создадим AJAX-запрос с обработкой через WPONE REST API.
JavaScript для запроса заказов:
fetch('https://your-site.ru/wp-json/wpone/v1/orders?customer=' + userId, {
headers: {
'Authorization': 'Bearer ' + userToken
}
})
.then(response => response.json())
.then(data => {
const container = document.getElementById('orders-list');
data.forEach(order => {
const div = document.createElement('div');
div.textContent = `Заказ №${order.id}, статус: ${order.status}`;
container.appendChild(div);
});
});На стороне PHP можно расширить WPONE REST API, добавив свои эндпоинты или обработчики, если нужно реализовать дополнительную логику.
Рекомендации по безопасности
Обязательно используйте SSL (HTTPS) для всех запросов к REST API, чтобы защитить данные авторизации. Также не передавайте ключи доступа в публичных скриптах — используйте серверные прокси или защищенные методы аутентификации.
Полезные плагины для работы с WooCommerce и REST API
Для расширения возможностей и удобства работы можно использовать:
- Clearfy Pro — для оптимизации и управления API.
- WPCommunity — для организации доступа и управления правами.
Эти инструменты помогут сделать взаимодействие с API более гибким и безопасным.
Заключение по работе с WPONE REST API и заказами WooCommerce
Использование WPONE REST API позволяет разработчикам легко получать и обрабатывать данные заказов WooCommerce, используя гибкие фильтры и надежную аутентификацию. В статье приведены примеры кода и советы, которые помогут быстро интегрировать данные в ваши проекты.