Преамбула.
Эта статья является логическим продолжением и дополнением этой моих статей: "Первый шаг" и "Второй шаг". А также полностью с ними взаимосвязана, отсылки к ним будут периодически здесь появляться.
Здесь мы рассмотрим код 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С, про этот момент забыл. Поэтому пришлось делать структуру перевода с "Русского" на "Английский" и обратно.
Подробнее под спойлером.
Процедуры и функции работы со структурами перевода
//////КЭШ переменные необходимо объявить в модуле формы
Перем ВП_СтруктураСоответствийСАнгНаРусского, ВП_СтруктураСоответствийСРусскогоНаАнг;
#Область Текст_РаботасСТекстами
Процедура опф_СоздатьКэшСтруктуруСоответствияРусскогоАнглийского()
ВП_СтруктураСоответствийСАнгНаРусского=Новый Структура;
ВП_СтруктураСоответствийСРусскогоНаАнг=Новый Структура;
////маршруты ВП
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Категория") , "/wp-json/wp/v2/categories/");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Медиа") , "/wp-json/wp/v2/media/");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Посты") , "/wp-json/wp/v2/posts/");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Страницы") , "/wp-json/wp/v2/pages/");
////--- маршруты ВЦ
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Товары") , "/wp-json/wc/v3/products/");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("ТоварыКатегория") , "/wp-json/wc/v3/products/categories/");
////команды/конечные точки запросов ВП
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Список") ,"GET");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Получить") ,"GET");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Создать") ,"POST");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Обновить") ,"POST");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Удалить") ,"DELETE");
////---команды/конечные точки запросов ВЦ
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("СписокТовары") , "GET");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("ПолучитьТовары") , "GET");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("СоздатьТовары") , "POST");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("ОбновитьТовары") , "PUT");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("УдалитьТовары") , "DELETE");
//////ключи значений ВП
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("id") , "id");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("АтрибутыТовара"), "attributes");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("АтрибутыТоваров"), "default_attributes");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("ТермыАтрибута"), "options");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("ВидимостьАтрибута"), "visible");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("категорияТОвара") , "categories");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Описание") , "description");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("_Заголовок") , "title");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("КраткаяАннотация"), "excerpt");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("слаг") , "slug");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("контент") , "content");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("основное_фото"), "featured_media");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("id_поста") , "post");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("id_родителя") , "parent");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("альт_текст") , "alt_text");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("м_описание") , "caption");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("РасширениеФото"), "mime_type");
////ключи значений ВЦ
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Наименование") , "name");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("КраткоеОписание") , "short_description");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("КартинкаФото") , "image");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Артикул") , "sku");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Остаток") , "stock_quantity");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("ТекущаяЦена") , "regular_price");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Архивный") , "has_archives");
////////------ Реквизиты Общие для всех
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Дата_Создания") ,"date_created");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Дата_Изменения") ,"date_modified");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Дата_Изменения_gmt") ,"date_modified_gmt");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Дата_Создания_gmt") ,"date_created_gmt");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Групповые_Продукты") ,"grouped_products");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Цена_РасПродажи") ,"sale_price");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Цена") ,"price");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Прямая_Ссылка") ,"permalink");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Похожие_ids") ,"upsell_ids");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Тип") ,"type");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Управляемый_Запас") ,"manage_stock");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Налоговый_Статус") ,"tax_status");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Видимость_Вкаталоге") ,"catalog_visibility");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Всего_Продано") ,"total_sales");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Дата_Начала_Распродажи_gmt") ,"date_on_sale_to_gmt");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Альтернатива") ,"alt");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Источник") ,"src");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Ссылки") ,"_links");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Собственно_Ссылка") ,"href");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Собственно") ,"self");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("Коллекции") ,"collection");
ВП_СтруктураСоответствийСРусскогоНаАнг.Вставить(Врег("status") ,"status"); //// array Limit result set to orders assigned a specific status. Options: any, pending, processing, on-hold, completed, cancelled, refunded, failed and trash. Default is any.
/////Конвертируем ВП_СтруктураСоответствийСАнгНаРусского
Для каждого КлючИЗначение Из ВП_СтруктураСоответствийСРусскогоНаАнг Цикл
Если СтрНайти(КлючИЗначение.Значение,"-")>0 Тогда
НовыйКлюч= СтрЗаменить(КлючИЗначение.Значение,"-","_");
Иначе
НовыйКлюч=КлючИЗначение.Значение;
КонецЕсли;
Попытка
ВП_СтруктураСоответствийСАнгНаРусского.Вставить(НовыйКлюч,КлючИЗначение.Ключ);
Исключение /////значит уже есть
Продолжить;
КонецПопытки;
КонецЦикла;
КонецПроцедуры
//// <Поиск и возврат значения по ключу в ВП_СтруктураСоответствийСРусскогоНаАнг>
//
// Параметры:
// <ВхКлюч> - <Тип.ЛюбоеЗначение> - <ключ структуры>
//
// Возвращаемое значение: ИсхЗначение
// <Тип.ЛюбоеЗначение> - <значение >
//
Функция _Текст_ПеревестиНаАнгл_ПолучитьЗначениеПоКлючу(ВхКлюч) Экспорт
ВрегВхКлюч=Врег(ВхКлюч);
Попытка
Возврат ВП_СтруктураСоответствийСРусскогоНаАнг[ВрегВхКлюч];
Исключение
Возврат ВхКлюч;
КонецПопытки;
КонецФункции
////бывшая
Функция _Текст_ПеревестиСАнглРус_ПолучитьЗначениеПоКлючу(ВхКлюч) Экспорт
Если СтрНайти(ВхКлюч,"-")>0 Тогда
ВхКлюч= СтрЗаменить(ВхКлюч,"-","_");
КонецЕсли;
ВрегВхКлюч=Врег(ВхКлюч);
Попытка
Возврат ВП_СтруктураСоответствийСАнгНаРусского[ВрегВхКлюч];
Исключение
Возврат ВхКлюч;
КонецПопытки;
КонецФункции
#КонецОбласти
Конечные точки
"Список" -> "GET"
"Получить" -> "GET"
"Создать" -> "POST"
"ОбновитьТовары" -> "PUT"
"Удалить" -> "DELETE"
Маршрут
ТоварыКатегория -> /wp-json/wc/v3/products/categories/
Процедуры и функции в модуле формы.
Данные для тестов представлены в виде "Справочника", иерархический, с множеством подгрупп для наглядности.
Процедура ПослатьЗапросНаСайтКатегорииНажатие
Процедура ПослатьЗапросНаСайтКатегорииНажатие(Элемент)
ТекСтрока=ЭлементыФормы.КатегорииГруппыТоваров.ТекущаяСтрока;
Если НЕ ЗначениеЗаполнено(ОперацииСКатегориямиСайта) Тогда
Сообщить("Не выбрана конечная точка!");
Возврат;
КонецЕсли;
СтруктураПараметров=Новый Структура;
СтруктураПараметров.Вставить("Token",СоединениеССайтом_JWToken);
СтруктураПараметров.Вставить("Server",СоединениеССайтом_JWTServer);
СтруктураПараметров.Вставить("Маршрут",ТоварыКатегорияМаршрут);
СтруктураПараметров.Вставить("КонечнаяТочка",ОперацииСКатегориямиСайта);
////СтруктураПараметров.Вставить("",);
Если НЕ ОперацииСКатегориямиСайта="СПИСОК" Тогда
СтруктураПараметров.Вставить("Наименование",ТекСтрока.Ссылка.Наименование);
СтруктураПараметров.Вставить("Описание",ТекСтрока.Описание);
ТекСтрока=ЭлементыФормы.КатегорииГруппыТоваров.ТекущаяСтрока;
Если ОперацииСКатегориямиСайта="СОЗДАТЬ" Тогда
СтруктураПараметров.Вставить("Слаг",ТекСтрока.Слаг);
/////Если id картинки = 0 , то необходимо сначала опубликовать картинку
Если ТекСтрока.idКартинка=0 Тогда
/////собираем структуру для публикации
СтруктураПараметровКартинки=Новый Структура;
СтруктураПараметровКартинки.Вставить("Token",СоединениеССайтом_JWToken);
СтруктураПараметровКартинки.Вставить("Server",СоединениеССайтом_JWTServer);
СтруктураПараметровКартинки.Вставить("Маршрут","Медиа");
СтруктураПараметровКартинки.Вставить("КонечнаяТочка","СОЗДАТЬ");
СтруктураПараметровКартинки=ДобавитьДанныеМедиаВСтруктуру(СтруктураПараметровКартинки, ТекСтрока.СсылкаМедиа);
СтруктураОтветаССайта = _рс_публикация_ПодсистемаWordPressМедиа(СтруктураПараметровКартинки);
////обработка ответа
ПарсерСтруктура=_рс_ПостОбработка_РаспарситьПростуюСтрокуДерева(СтруктураОтветаССайта["ЗначениеОтвета"]);
КартинкаОбъект=ТекСтрока.СсылкаМедиа.ПолучитьОбъект();
ТекСтрока.idКартинка=ПарсерСтруктура.id;
КартинкаОбъект.id=ПарсерСтруктура.id;
КартинкаОбъект.Слаг=ПарсерСтруктура.Слаг;
КартинкаОбъект.link=ПарсерСтруктура.link;
КартинкаОбъект.status=ПарсерСтруктура.status;
КартинкаОбъект.Записать();
КонецЕсли;
СтруктураКартинки=Новый Соответствие;
СтруктураКартинки.Вставить("id",ТекСтрока.idКартинка);
СтруктураПараметров.Вставить("КартинкаФото",СтруктураКартинки);
Если ТекСтрока.Уровень()>0 Тогда
Если НЕ ЗначениеЗаполнено(ТекСтрока.id_родителя) Тогда
ТекСтрока.id_родителя=ТекСтрока.Родитель.id;
КонецЕсли;
СтруктураПараметров.Вставить("id_родителя",ТекСтрока.id_родителя);
КонецЕсли;
Иначе
Если ТекСтрока.id=0 Тогда
Сообщить("id=0, продолжение невозможно.");
Возврат;
КонецЕсли;
СтруктураПараметров.Вставить("id",ТекСтрока["id"]);
Если ОперацииСКатегориямиСайта="УДАЛИТЬ" Тогда
СтруктураПараметров.Вставить("force","true");
КонецЕсли;
КонецЕсли;
КонецЕсли;
СтруктураОтветаССайта = _рс_публикация_ПодсистемаWordPressПостыСтраницы(СтруктураПараметров);
ФормаПросмотраОтветаССайта=ПолучитьОбщуюФорму("ФормаПросмотраОтветаССайта");
ФормаПросмотраОтветаССайта.КодСостояния =СтруктураОтветаССайта["КодСостояния"];
ФормаПросмотраОтветаССайта.ОписаниеОтвета =СтруктураОтветаССайта["ОписаниеОтвета"];
ФормаПросмотраОтветаССайта.РезультатКонвертацииИзJSON =СтруктураОтветаССайта["ЗначениеОтвета"];
ФормаПросмотраОтветаССайта.Открыть();
КатегорияОбъект=ТекСтрока.Ссылка.ПолучитьОбъект();
Если ОперацииСКатегориямиСайта="УДАЛИТЬ" Тогда
ТекСтрока.id=0;
ТекСтрока.id_родителя=0;
КатегорияОбъект.id=0;
КатегорияОбъект.id_родителя=0;
ИначеЕсли ОперацииСКатегориямиСайта="СПИСОК" Тогда
/////ничего не обрабатываем
Возврат;
Иначе
ПарсерСтруктура=_рс_ПостОбработка_РаспарситьПростуюСтрокуДерева(СтруктураОтветаССайта["ЗначениеОтвета"]);
ТекСтрока.id=ПарсерСтруктура.id;
ТекСтрока.id_родителя=ПарсерСтруктура.id_родителя;
ТекСтрока.Слаг=ПарсерСтруктура.Слаг;
КатегорияОбъект.id=ПарсерСтруктура.id;
КатегорияОбъект.Слаг=ПарсерСтруктура.Слаг;
КатегорияОбъект.id_родителя=ПарсерСтруктура.id_родителя;
КатегорияОбъект.Описание=ПарсерСтруктура.Описание;
КонецЕсли;
КатегорияОбъект.Записать();
КонецПроцедуры ///ПослатьЗапросНаСайтКатегорииНажатие
Типовая процедура, как было описано в предыдущих статьях. Есть небольшое отличие, о котором напишу.
Если id картинки = 0 , то необходимо сначала опубликовать картинку.
- Собираем структуру данных для публикации картинки.
- Публикуем картинку.
- Получаем id картинки.
- Сохраняем полученные данные от сайта в реквизитах картинки.
- Добавляем id картинки в структуру данных для публикации категории в магазин WooCommerce.
И, собственно всё, отправляем данные на публикацию категории.
Процедуры и функции модуля объекта.
Описывать их здесь, наверное, нет надобности. Так как всё подробно описал в предыдущих статьях.
Небольшая видео демонстрация, показывающая, простоту взаимодействия из 1С с сайтом / магазином WooCommerce.
Заключение.
Как видим, опубликовать категории товаров на сайте / магазине WooCommerce не составляет большого труда.
Желаю приятных экспериментов на ниве обмена из 1С с сайтом WordPress.
Плюсуем, не стесняемся, делимся, комментируем.
Особенно ПЛЮСУЕМ, это есть очень большой мотиватор для меня. Если вы не поставили "+" предыдущей публикации, прошу сюда.
Продолжение следует. В следующей публикации продолжим работу с магазином WooCommerce, с товарами и будем их публиковать в "пакетном" (batch) режиме.
Обработка тестировалась:
Тестировалось на моем сайте: перейти.
Версия WordPress: 5.4.1
PHP Версия : 7.3.15
Платформа: 1С:Предприятие 8.3 (8.3.13.1644).
Минимально необходимый релиз платформы: 8.3.6.