Интеграция 1С и CMS WordPress посредством Rest API сайта. Шаг второй, публикация картинок
Интеграция 1С и CMS WordPress посредством функционала Rest API. Используем только язык программирования 1С и штатный функционал Rest API предоставляемый CMS, без дополнительных библиотек и плагинов. Процедуры и функции передачи фото из 1С, с комментариями внутри.
- Описание
- Подробнее
Описание
Преамбула.
Эта статья является логическим продолжением и дополнением этой моей статьи. А также полностью с ней взаимосвязана, отсылки к ней будут периодически здесь появляться.
Здесь мы рассмотрим код 1С, с помощью которого сможем сделать следующее с фотографией/картинкой (медиа) на сайте:
- Создать.
- Обновить/изменить.
- Посмотреть 1.
- Посмотреть список.
- Удалить.
Также сможем сделать аналогичное с категориями товаров магазина WooCommerce, плюс привязка к категории картинки (Миниатюры).
Публикация Медиа.
Конечные точки WordPress используемые для медиа.
- POST.
- GET.
- DELETE.
Чтобы было нагляднее и понятнее, трансляция:
команды/конечные точки запросов ВП
"Список" -> "GET"
"Получить" -> "GET"
"Создать" -> "POST"
"Обновить" -> "POST"
"Удалить" -> "DELETE"
Почему под некоторыми разными русскими "командами" используются одинаковые конечные точки WordPress? Не знаю, наверное, надо адресовать этот вопрос разработчикам CMS.
Маршруты WordPress используемые для медиа.
"Медиа" -> "/wp-json/wp/v2/media/"
Также можете по-экспериментировать с другими:
"Категория" -> "/wp-json/wp/v2/categories/"
"Посты" -> "/wp-json/wp/v2/posts/"
"Страницы" -> "/wp-json/wp/v2/pages/"
Немного теории. REST API Handbook / Reference / Media
Является моим вольным переводом книги разработчика, источник.
Мои комментарии: образец моего комментария.
Схема
Схема определяет все поля, существующие в записи элемента мультимедиа. Можно ожидать, что любой ответ от этих конечных точек будет содержать поля описанные ниже, если только не используется параметр запроса "_filter" или поле схемы не появляется только в определенном контексте.
date Array, datetime | Дата публикации объекта в часовом поясе сайта. Контекст: |
date_gmt Array, datetime | Дата публикации объекта — GMT. Контекст: |
guid object | Глобальный уникальный идентификатор объекта. Только для чтения. |
id integer | Уникальный идентификатор объекта. Только для чтения |
link string, | URL объекта. Только для чтения |
modified string, | Дата последнего изменения объекта в часовом поясе сайта. Только для чтения |
modified_gmt string, datetime | Дата последней модификации объекта в GMT. Только для чтения. |
slug string | Слаг, буквенно-цифровой идентификатор объекта, уникальный для его типа. Контекст: |
status string | Определенный статус объекта. Контекст: |
type string | Type of Post for the object. Только для чтения. |
permalink_template string | Шаблон Permalink для объекта. Только для чтения. |
generated_slug string | Слаг автоматически генерируется из названия объекта. Только для чтения. |
title object | Заголовок/название объекта. Контекст: |
author integer | ID автора публикации объекта. Контекст: |
comment_status string | Устанавливает открыты или нет комментарии к объекту. Контекст: |
ping_status string | Устанавливает открыт или нет пинк к объекту. Контекст: |
meta object | Мета поля. Контекст: |
template string | Файл темы, используемый для отображения объекта. Контекст: |
alt_text string | Альтернативный текст для отображения, если вложение не отображается. Контекст: |
caption object | Подпись к вложению. Контекст: |
description object | Описание. Контекст: |
media_type string | Тип вложения. Только для чтения. |
mime_type string | MIME тип вложения. Только для чтения. |
media_details object | Подробные сведения о медиафайле, относящиеся к его типу. Только для чтения. |
post integer | ID связанной записи вложения. Контекст: |
source_url string, | URL-адрес исходного файла вложения. Только для чтения. |
missing_image_sizes array | Список отсутствующих размеров изображений вложения. Только для чтения. |
Список медиа.
Запрос по этой конечной точке, чтобы получить коллекцию медиа. Полученный ответ можно контролировать и фильтровать с помощью приведенных ниже параметров URL-запроса.
GET /wp/v2/media
В контексте нижеописанного кода 1С выглядит так:
СПИСОК /wp/v2/media
Про Аргументы маршрута можно почитать по ссылке выше. Без аргументов выдает список из десяти элементов. Мной не использовались за ненадобность.
Просмотр элемента медиа.
Запрос по этой конечной точке, чтобы получить конкретную запись элемента мультимедиа.
GET /wp/v2/media/<id>
В контексте нижеописанного кода 1С выглядит так:
Получить /wp/v2/media/<id>
id — обязательный аргумент.
Удалить элемент медиа.
Аргументы.
id | Уникальный идентификатор объекта. |
force | Нужно ли помещать в "Корзину" или принудительно удалять его. Принимаемые значения "Истина" или "Ложь". |
DELETE /wp/v2/media/<id>
В контексте нижеописанного кода 1С выглядит так:
Удалить /wp/v2/media/<id>
id — обязательный аргумент.
Обновить элемент медиа.
Аналогичен созданию элемента медиа, описание ниже по тексту.
POST /wp/v2/media/<id>
В контексте нижеописанного кода 1С выглядит так:
Обновить /wp/v2/media/<id>
id — обязательный аргумент.
Создать элемент медиа.
Аргументы.
date | Дата публикации объекта в часовом поясе сайта. В контексте приведенного ниже кода не использую, генерируется системой автоматически. |
date_gmt | Дата публикации объекта — GMT. В контексте приведенного ниже кода не использую, генерируется системой автоматически. |
slug | Слаг, буквенно-цифровой идентификатор объекта, уникальный для его типа. В коде использую, лучше создавать самому, в латинице. Может генерироваться системой автоматически. |
status | Определенный статус объекта. Один из вариантов: |
title | Заголовок/название объекта. В коде использую, обязательный для заполнения реквизит. |
author | ID автора публикации объекта. В контексте приведенного ниже кода не использую, берется системой автоматически из Токена. |
comment_status | Устанавливает открыты или нет комментарии к объекту. Один из: |
ping_status | Устанавливает открыт или нет пинк к объекту. Один из: |
meta | Мета поля. В контексте приведенного ниже кода не использую. |
template | Файл темы, используемый для отображения объекта. В контексте приведенного ниже кода не использую. |
alt_text | Альтернативный текст для отображения, если вложение не отображается. В коде использую, не обязательный для заполнения реквизит. |
caption | Подпись к вложению. В коде использую, не обязательный для заполнения реквизит. |
description | Описание. В коде использую, не обязательный для заполнения реквизит. |
post | ID связанной записи вложения. В контексте приведенного ниже кода не использую. |
Как используется.
POST /wp/v2/media
В контексте нижеописанного кода 1С выглядит так:
СОЗДАТЬ /wp/v2/media [Список аргументов]
Наверное это самый важный момент, поэтому рассмотрим его максимально подробно.
Публикация медиа-картинки из 1С на сайт WordPress.
Для этого использую внешнюю обработку на обычных формах. Код на управляемых формах не будет отличаться от приведенного здесь, чуть-чуть сложнее, но думаю для вас не составит труд адаптировать. Мне, честно говоря, было лень.
Исходные данные.
Аргументы запроса
Что означают первые 4 пункта, можно прочитать здесь.
- Token.
- Server
- Маршрут
- КонечнаяТочка
- _Заголовок — title в WordPress
- ИмяФайла — полный путь картинки на диске, например: C:\Foto\media.jpg
- Описание — description в WordPress
- альт_текст — alt_text в WordPress
- м_описание — caption в WordPress
- РасширениеФото — mime_type в WordPress, расширение файла
- Слаг — slug в WordPress, временное имя файла, если всё хорошо, становится именем.
Аргументы с 5 по 11 должны присутствовать в реквизитах элемента справочника (иной сущности) 1С. Можно иные данные, как вам будет удобнее.
Важное замечание: с самого начала, делал реквизиты на английском, как в WordPress. Однако в последствии столкнулся с тем, что многие "аглицкие" названия зарезервированы самой 1С, про этот момент забыл. Поэтому пришлось делать структуру перевода с "Русского" на "Английский" и обратно.