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

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


rest_api_wc_woocommerce

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
rest_api_wc_woocommerce [2018/08/13 05:50]
darkfire [EST API WC WooCommerce документация]
rest_api_wc_woocommerce [2018/10/31 12:36] (текущий)
darkfire [FAQ: как вывести все товары в определенной категории]
Строка 9: Строка 9:
 **Ответ:​** Там не один запрос,​ а несколько,​ в разные таблицы. На прямую базу данных WooCommerce лучше не трогать,​ для это есть [[http://​woocommerce.github.io/​woocommerce-rest-api-docs|REST API WC]]. **Ответ:​** Там не один запрос,​ а несколько,​ в разные таблицы. На прямую базу данных WooCommerce лучше не трогать,​ для это есть [[http://​woocommerce.github.io/​woocommerce-rest-api-docs|REST API WC]].
  
-==== Плагины для импорта/​экспорта товаров WooCommerce ​ ==== 
  
-  * [[https://​wordpress.org/​plugins/​simple-woocommerce-csv-loader/​|Ultimate ​WooCommerce ​CSV Importer]] ​умеет загружать изображения через URL или локальный путь к файлу. Обнаруживает и пропускает повторяющиеся изображения! +====== REST API WC WooCommerce ​документация ====== 
-  * [[https://wordpress.org/plugins/​product-import-export-for-woo/|Product Import Export for WooCommerce ​By WebToffee]] позволит производить импорт и экспорт товаров WooCommerce. Установить данный плагин вы сможете прямо из админ-панели wordpress. После установки и активации плагина,​ перейдите на страницу:​ WooCommerce — Product Im-Ex. Здесь вы сможете импортировать или экспортировать товары ​WooCommerce. Настройки по молчанию менять не надо, он вполне рабочие. [[https://​www.xadapter.com/​setting-up-product-import-export-plugin-for-woocommerce/#​product-import-export|Таблица описания названия полей базы данных для импорта]]+  * [[http://woocommerce.github.io/woocommerce-rest-api-docs|REST API WooCommerce]] 
 + 
 + 
 +===== Настройка WooCommerce ​REST API PHP Library =====
  
-====== EST API WC WooCommerce документация ====== 
-  * [[http://​woocommerce.github.io/​woocommerce-rest-api-docs|REST API WC]] 
-  * [[https://​docs.woocommerce.com/​document/​woocommerce-rest-api/​|WooCommerce REST API]] 
   * [[https://​github.com/​woocommerce/​wc-api-php|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>​
загрузка...
rest_api_wc_woocommerce.1534139440.txt.gz · Последние изменения: 2018/08/13 05:50 — darkfire