Инструменты пользователя

Инструменты сайта


rest_api_wc_woocommerce

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

rest_api_wc_woocommerce [2018/10/31 15:36]
rest_api_wc_woocommerce [2020/06/13 13:46] (текущий)
Строка 1: Строка 1:
 +====== Использование REST API WC WooCommerce для импорта товара ======
  
 +~~Title: Использование REST API WC WooCommerce для для добавления товара ~~
 +{{htmlmetatags>
 +metatag-description=(Примеры использования REST API WC WooCommerce.)
 +}}
 +
 +**Вопрос:** Подскажите какие sql запросы использует [[kak_otkryt_internet-magazin|WooCommerce]] для полного добавления одного товара(с картинкой). Или есть ли способ отследить какие запросы прилетают к mysql от wordpress?
 +**Ответ:** Там не один запрос, а несколько, в разные таблицы. На прямую базу данных WooCommerce лучше не трогать, для это есть [[http://woocommerce.github.io/woocommerce-rest-api-docs|REST API WC]].
 +
 +
 +====== REST API WC WooCommerce документация ======
 +  * [[http://woocommerce.github.io/woocommerce-rest-api-docs|REST API WooCommerce]]
 +
 +
 +===== Настройка WooCommerce REST API PHP Library =====
 +
 +  * [[https://github.com/woocommerce/wc-api-php|WooCommerce REST API PHP Library]]
 +
 +  * Устанавливаем библиотеку WooCommerce REST API PHP Library в корень сайта нашего проекта, при помощи [[Composer]]<file bash>
 +# composer require automattic/woocommerce
 +</file>
 +  * Генерируем ключи согласно [[http://docs.woocommerce.com/document/woocommerce-rest-api/|WooCommerce REST API]]. Включаем в настройках плагина WooCommerce поддержку REST API. Жмем генерировать ключи, будут созданы 2 ключа: Пользовательский ключ (Consumer Key) и Секретный код пользователя (Consumer Secret). Их обязательно нужно записать!
 +{{ ::woo-rest-api-01.jpg?nolink |}}
 +  * [[https://github.com/woocommerce/woocommerce/wiki/Getting-started-with-the-REST-API#making-a-basic-request|Тестируем подключение REST]], для этого при переходе по (подставьте свой домен) https://local.wordpress.dev/wp-json/wc/v2/orders, должен вернуться JSON в браузере. В текущей версии WooCommerce API v2 возвращается ошибка 401. Если и у вас так, то проверку можно осуществить зайдя в корень и получив в ответ огромный массив Json https://local.wordpress.dev/wp-json/wc/v2 или с ключами (получим пустой Json) https://local.wordpress.dev/wp-json/wc/v2/orders?consumer_key=XXXX&consumer_secret=XXXX
 +  * Настраиваем подключение REST для PHP библиотеки (настройка для нового API REST WooCommerce 2.6 или новее). После подключения выведем все товары нашего магазина.<file php><?php
 +require __DIR__ . '/vendor/autoload.php';
 +
 +use Automattic\WooCommerce\Client;
 +
 +$woocommerce = new Client(
 +    'http://example.com', 
 +    'ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 
 +    'cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
 +    [
 +        'wp_api' => true,
 +        'version' => 'wc/v2',
 +    ]
 +);
 +
 +// Вывести все товары
 +print_r($woocommerce->get('products'));
 +?>
 +</file>
 +
 +===== Формат запроса/ответа REST API WC WooCommerce=====
 +
 +Формат ответа по умолчанию - [[JSON]]. Запросы с помощью тела сообщений используют простой JSON для установки или обновления атрибутов ресурсов. Успешные запросы возвратят статус 200 OK HTTP.
 +
 +Общая информация об ответах:
 +
 +  * Даты возвращаются в формате ISO8601: ГГГГ-ММ-ДДТ:ММ:СС (YYYY-MM-DDTHH:MM:SS)
 +  * Идентификаторы ресурсов возвращаются как целые числа (Integer).
 +  * Любая десятичная денежная сумма, такая как цены или итоговые суммы, будет возвращена в виде строк с двумя знаками после запятой.
 +  * Другие суммы, такие как количество элементов, возвращаются как целые числа.
 +  * Пустые поля обычно включаются в качестве нулевой или emtpy-строки вместо того, чтобы быть опущены.
 +  * Поддержка [[json#jsonp_i_jsonpp|JSONP]]. WP REST API поддерживает JSONP по умолчанию. Ответы JSONP используют тип содержимого application/javascript. Вы можете указать обратный вызов, используя параметр ?_jsonp для запросов методом [[GET]], чтобы получить ответ, завернутый в функцию JSON:<file php>
 + /wp-json/wc/v2?_jsonp=callback
 +</file>
 +
 +===== FAQ: Как при помощи REST API WC WooCommerce вывести все товары? =====
 +Как вывести все товары в WooCommerce - казалось бы тривиальный вопрос, но это не так просто. Для каждой версии API вывод всех товаров реализуется по разному.
 +
 +Суть проблемы связана с [[https://woocommerce.github.io/woocommerce-rest-api-docs/?php#pagination|пагинацией страниц]], в последней версии по умолчанию выводится только 10 товаров. В документации предлагается для вывода всех товаров код PHP, но он выводит только 10<file php>
 +<?php print_r($woocommerce->get('products')); ?>
 +</file>
 +
 +Много разных советов на просторах интернета, но у меня реально заработал код ниже, спасибо [[ttps://stackoverflow.com/questions/48476534/get-all-products-from-woocommerce-using-rest-api|spartanz51]]. В коде задается массив, в котором указано вывести страницы от 1 до 100, если у вас больше 1000 товаров - увеличивайте ещё.
 +<file php>
 +$page = 1;
 +$res = $woocommerce->get('products',array('per_page' => 100, 'page' => $page));
 +</file>
 +
 +===== FAQ: как вывести все товары в определенной категории =====
 +WooCommerce вывести все товары принадлежащей категории с id 75.
 +<file php>
 +print_r($wooeto->get('products', array('category' => '75', 'per_page' => '100')));
 +</file>
 +В этом случае выведется только часть товаров, так как не задан per_page 
 +<file php>
 +print_r($wooeto->get('products', array('category' => '75', 'orderby' => 'date')));
 +</file>