Интеграция 1С и CMS WordPress посредством Rest API сайта. Шаг третий, WooCommerce, публикация категорий товаров
Интеграция 1С и CMS WordPress посредством функционала Rest API. Используем только язык программирования 1С и штатный функционал Rest API предоставляемый CMS, без дополнительных библиотек и плагинов. Процедуры и функции публикации категорий товаров в магазин WooCommerce, с комментариями внутри.
- Описание
- Подробнее
Описание
Преамбула.
Эта статья является логическим продолжением и дополнением этой моих статей: "Первый шаг" и "Второй шаг". А также полностью с ними взаимосвязана, отсылки к ним будут периодически здесь появляться.
Здесь мы рассмотрим код 1С, с помощью которого сможем сделать следующее с категориями товаров магазина на сайте:
- Создать.
- Обновить/изменить.
- Посмотреть 1.
- Посмотреть список.
- Удалить.
Всё это мы будем делать в контексте привязки к категории картинки (Миниатюры).
Публикация Категорий товаров.
Конечные точки WordPress / WooCommerce используемые для категорий товаров.
- POST.
- GET.
- PUT.
- DELETE.
Чтобы было нагляднее и понятнее, трансляция:
команды/конечные точки запросов WordPress / WooCommerce
"Список" -> "GET"
"Получить" -> "GET"
"Создать" -> "POST"
"ОбновитьТовары" -> "PUT"
"Удалить" -> "DELETE"
Маршруты WooCommerce используемые для категорий товаров.
"ТоварыКатегория" -> "/wp-json/wc/v3/products/categories/"
Немного теории.
Является моим вольным переводом документации разработчика, источник.
Мои комментарии: образец моего комментария.
REST API — это мощная часть WooCommerce, которая позволяет вам читать и записывать различные части данных WooCommerce, такие как заказы, продукты, купоны, клиенты и зоны доставки.
Формат Запроса / Ответа
Формат ответа по умолчанию — JSON. Запросы с телом сообщения используют обычный JSON для установки или обновления атрибутов ресурсов. Успешные запросы вернут состояние HTTP 200 OK.
Даты возвращаются в формате ISO8601: YYYY-MM-DDTHH:MM:SS
- Идентификаторы ресурсов (id) возвращаются в виде целых чисел.
- Любая десятичная денежная сумма, например цены или итоги, будет возвращена в виде строк с двумя десятичными знаками.
- Другие суммы, такие как количество элементов, возвращаются в виде целых чисел.
- Пустые поля обычно включаются в качестве строки "null" или "emtpy" вместо того, чтобы быть пропущенными.
Ошибки
Иногда вы можете столкнуться с ошибками при доступе к REST API. Существует четыре возможных типа:
Код Тип
400 Bad Request плохой запрос недопустимый запрос, например, с использованием неподдерживаемого метода HTTP
401 Unauthorized ошибка проверки подлинности или разрешения, например, неправильные ключи API
404 Not Found не найдены запросы к ресурсам, которые не существуют или отсутствуют
500 Internal Server Error Внутренняя ошибка сервера ошибка сервера
Категории продуктов.
API категорий продуктов позволяет создавать, просматривать, обновлять и удалять отдельные или пакетно категории товаров.
Свойства категории продукта.
Атрибут | Тип | Описание |
---|---|---|
id | целое число | Уникальный идентификатор ресурса / категории. Только для чтения. В контексте приведенного ниже кода использую, генерируется системой автоматически |
name | строка / текст | Имя ресурса / категории. Обязательный. В контексте приведенного ниже кода использую, необходимо создавать самому |
slug | строка / текст | Слаг, буквенно-цифровой идентификатор объекта, уникальный для его типа. В контексте приведенного ниже кода использую, лучше создавать самому, в латинице. Может генерироваться системой автоматически. |
parent | целое число | ID родителя ресурса. В контексте приведенного ниже кода использую, аналогично группам товаров в 1С. |
description | строка / текст | HTML описание ресурса / категории. |
display | строка / текст | Категория архивного тип отображения. Опции: default , products , subcategories and both . По умолчанию default .В контексте приведенного ниже кода не использую |
image | объект | Данные картинки. Описание смотрите ниже. В контексте приведенного ниже кода использую, аналогично привязанным картинкам к товарам в 1С. |
menu_order | целое число | Порядок меню, используемый для пользовательской сортировки ресурса. В контексте приведенного ниже кода использую. |
count | целое число | Количество опубликованных продуктов для данного ресурса. В контексте приведенного ниже кода не использую, можно использовать для информации. |
Категория продукта — свойства изображения
Атрибут | Тип | Описание |
---|---|---|
id | целое число | ID изображения. Обязательный. В контексте приведенного ниже кода использую.* |
date_created | дата-время | Дата создания изображения в часовом поясе сайта. Только для чтения. В контексте приведенного ниже кода не использую, можно использовать для информации. |
date_created_gmt | дата-время | Дата создания изображения, в GMT. |
date_modified | дата-время | Дата последнего изменения изображения в часовом поясе сайта. Только для чтения. В контексте приведенного ниже кода не использую, можно использовать для информации. |
date_modified_gmt | дата-время | Дата последнего изменения изображения — GMT. Только для чтения. В контексте приведенного ниже кода не использую, можно использовать для информации. |
src | строка/текст | URL изображения. |
name | строка/текст | Наименование изображения. В контексте приведенного ниже кода не использую.* |
alt | строка/текст | Альтернативный текст изображения. В контексте приведенного ниже кода не использую.* |
* Из всех выше описанных атрибутов, для привязки изображения / картинки к категории, нам нужен только ID.
Как создать / опубликовать картинку можете прочитать в этой статье.
Создать категорию товаров.
Этот API поможет вам создать новую категорию продуктов.
POST /wp-json/wc/v3/products/categories
или
Создать -> /wp-json/wc/v3/products/categories
В контексте кода 1С.
Получить категорию товара.
Этот API позволяет получить категорию товара по идентификатору. Одну.
GET /wp-json/wc/v3/products/categories/<id>
или
Получить -> /wp-json/wc/v3/products/categories/<id>
В контексте кода 1С. id — обязательный аргумент.
Список всех категорий продукта.
Этот API позволяет извлекать все категории товаров.
GET /wp-json/wc/v3/products/categories
или
Список -> /wp-json/wc/v3/products/categories
В контексте кода 1С.
Обновить категорию товаров.
Этот API позволяет вносить изменения в категорию товаров.
PUT /wp-json/wc/v3/products/categories/<id>
или
Обновить -> /wp-json/wc/v3/products/categories/<id>
В контексте кода 1С. id — обязательный аргумент.
Удалить категорию товаров.
Этот API позволяет удалить категорию товаров.
DELETE /wp-json/wc/v3/products/categories/<id>
или
Удалить -> /wp-json/wc/v3/products/categories/<id>
В контексте кода 1С. id — обязательный аргумент.
Доступные параметры
Параметр | Тип | Описание |
---|---|---|
force | строка | Необходимо установить true (Истина в 1С) , если категорию не надо помещать в "Корзину". |
Надеюсь, теперь теоретически вы подкованы, пора переходить к практике.
Публикация категорий товаров на сайт, в магазин WooCommerce.
Для этого использую внешнюю обработку на обычных формах. Код на управляемых формах не будет отличаться от приведенного здесь, чуть-чуть сложнее, но думаю для вас не составит труд адаптировать. Мне, честно говоря, было лень.
Исходные данные.
Аргументы запроса
Что означают первые 4 пункта, можно прочитать здесь.
- Token.
- Server
- Маршрут
- КонечнаяТочка
- Наименование — "name" в контексте WooCommerce. Строка.
- Описание — "description" в контексте WooCommerce. Строка.
- Слаг — "slug" в контексте WooCommerce, временное имя файла, если всё хорошо, становится ссылкой. Строка.
- КартинкаФото — "id" изображения в контексте WooCommerce. Число.
- id_родителя — "parent" в контексте WooCommerce. Число.
Аргументы с 5 по 9 должны присутствовать в реквизитах элемента справочника (иной сущности) 1С. Можно иные данные, как вам будет удобнее.
Повторюсь, важное замечание: с самого начала, делал реквизиты на английском, как в WordPress. Однако в последствии столкнулся с тем, что многие "аглицкие" названия зарезервированы самой 1С, про этот момент забыл. Поэтому пришлось делать структуру перевода с "Русского" на "Английский" и обратно.
Подробнее под спойлером.