Каталог решений - Интеграция 1С и CMS WordPress посредством Rest API сайта. Шаг второй, публикация картинок

Интеграция 1С и CMS WordPress посредством Rest API сайта. Шаг второй, публикация картинок

Интеграция 1С и CMS WordPress посредством Rest API сайта. Шаг второй, публикация картинок

В наличии

Интеграция 1С и CMS WordPress посредством функционала Rest API. Используем только язык программирования 1С и штатный функционал Rest API предоставляемый CMS, без дополнительных библиотек и плагинов. Процедуры и функции передачи фото из 1С, с комментариями внутри.

Категория:

Описание

Преамбула.

Эта статья является логическим продолжением и дополнением этой моей статьи. А также полностью с ней взаимосвязана, отсылки к ней будут периодически здесь появляться.

Здесь мы рассмотрим код 1С, с помощью которого сможем сделать следующее с фотографией/картинкой (медиа) на сайте:

  1. Создать.
  2. Обновить/изменить.
  3. Посмотреть 1.
  4. Посмотреть список.
  5. Удалить.

Также сможем сделать аналогичное с категориями товаров магазина WooCommerce, плюс привязка к категории картинки (Миниатюры).

Публикация Медиа.

Конечные точки WordPress используемые для медиа.

  1. POST.
  2. GET.
  3. 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 
Дата публикации объекта в часовом поясе сайта.

Контекст: vieweditembed
В контексте приведенного ниже кода не использую.

date_gmt
Array, datetime 
Дата публикации объекта — GMT.

Контекст: viewedit
В контексте приведенного ниже кода не использую.

guid
object
Глобальный уникальный идентификатор объекта.

Только для чтения.
Контекст: viewedit
В контексте приведенного ниже кода не использую, генерируется системой автоматически.

id

integer

Уникальный идентификатор объекта.

Только для чтения
Контекст: vieweditembed
В коде использую, генерируется системой автоматически.

modified

string,
datetime 

Дата последнего изменения объекта в часовом поясе сайта.

Только для чтения
Контекст: viewedit
В коде использую, генерируется системой автоматически.

modified_gmt

string, datetime 

Дата последней модификации объекта в GMT.

Только для чтения.
Контекст: viewedit
В контексте приведенного ниже кода не использую.

slug

string

Слаг, буквенно-цифровой идентификатор объекта, уникальный для его типа.

Контекст: vieweditembed
В коде использую, лучше создавать самому, в латинице. Может генерироваться системой автоматически.

status

string

Определенный статус объекта.

Контекст: viewedit.
Один из вариантов: publishfuturedraftpendingprivate
В коде использую как publish, обязательный реквизит.

type

string

Type of Post for the object.

Только для чтения.
Контекст: vieweditembed
В контексте приведенного ниже кода не использую, генерируется системой автоматически.

generated_slug

string

Слаг автоматически генерируется из названия объекта.

Только для чтения.
Контекст: edit
В контексте приведенного ниже кода не использую, генерируется системой автоматически.

title

object

Заголовок/название объекта.

Контекст: vieweditembed
В коде использую, обязательный для заполнения реквизит.

author

integer

ID автора публикации объекта.

Контекст: vieweditembed
В контексте приведенного ниже кода не использую, берется системой автоматически из Токена.

comment_status

string

Устанавливает открыты или нет комментарии к объекту.

Контекст: viewedit
Один из: openclosed
В контексте приведенного ниже кода не использую, системой автоматически устанавливается closed

ping_status

string

Устанавливает открыт или нет пинк к объекту.

Контекст: viewedit
Один из: openclosed
В контексте приведенного ниже кода не использую, системой автоматически устанавливается closed

meta

object

Мета поля.

Контекст: viewedit
В контексте приведенного ниже кода не использую. Честно говоря, не знай где и как использовать.

template

string

Файл темы, используемый для отображения объекта.

Контекст: viewedit
В контексте приведенного ниже кода не использую. Честно говоря, не знай где и как использовать.

alt_text

string

Альтернативный текст для отображения, если вложение не отображается.

Контекст: vieweditembed
В коде использую, не обязательный для заполнения реквизит.

caption

object

Подпись к вложению.

Контекст: vieweditembed
В коде использую, не обязательный для заполнения реквизит.

description

object

Описание.

Контекст: viewedit
В коде использую, не обязательный для заполнения реквизит.

media_type

string

Тип вложения.

Только для чтения.
Контекст: vieweditembed
Один из: imagefile
В контексте приведенного ниже кода не использую, генерируется системой автоматически.

mime_type

string

MIME тип вложения.

Только для чтения.
Контекст: vieweditembed
В контексте приведенного ниже кода не использую, генерируется системой автоматически.

media_details

object

Подробные сведения о медиафайле, относящиеся к его типу.

Только для чтения.
Контекст: vieweditembed
В контексте приведенного ниже кода не использую, генерируется системой автоматически.

post

integer

ID связанной записи вложения.

Контекст: viewedit
В контексте приведенного ниже кода не использую, генерируется системой автоматически.

source_url

string,
uri

URL-адрес исходного файла вложения.

Только для чтения.
Контекст: vieweditembed
В контексте приведенного ниже кода не использую, генерируется системой автоматически.

missing_image_sizes

array

Список отсутствующих размеров изображений вложения.

Только для чтения.
Контекст: edit
В контексте приведенного ниже кода не использую, генерируется системой автоматически.

 

Список медиа.

Запрос по этой конечной точке, чтобы получить коллекцию медиа. Полученный ответ можно контролировать и фильтровать с помощью приведенных ниже параметров 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Определенный статус объекта.

Один из вариантов: publishfuturedraftpendingprivate
В коде использую как publish, обязательный реквизит.

titleЗаголовок/название объекта.

В коде использую, обязательный для заполнения реквизит.

authorID автора публикации объекта.

В контексте приведенного ниже кода не использую, берется системой автоматически из Токена.

comment_statusУстанавливает открыты или нет комментарии к объекту.

Один из: openclosed
В контексте приведенного ниже кода не использую, системой автоматически устанавливается closed

ping_statusУстанавливает открыт или нет пинк к объекту.

Один из: openclosed
В контексте приведенного ниже кода не использую, системой автоматически устанавливается closed

metaМета поля.

В контексте приведенного ниже кода не использую. 

templateФайл темы, используемый для отображения объекта.

В контексте приведенного ниже кода не использую. 

alt_textАльтернативный текст для отображения, если вложение не отображается.

В коде использую, не обязательный для заполнения реквизит.

captionПодпись к вложению.

В коде использую, не обязательный для заполнения реквизит.

descriptionОписание.

В коде использую, не обязательный для заполнения реквизит.

postID связанной записи вложения.

В контексте приведенного ниже кода не использую.

 

Как используется.

POST /wp/v2/media
В контексте нижеописанного кода 1С выглядит так:
СОЗДАТЬ /wp/v2/media [Список аргументов]

Наверное это самый важный момент, поэтому рассмотрим его максимально подробно.

Публикация медиа-картинки из 1С на сайт WordPress.

Для этого использую внешнюю обработку на обычных формах. Код на управляемых формах не будет отличаться от приведенного здесь, чуть-чуть сложнее, но думаю для вас не составит труд адаптировать. Мне, честно говоря, было лень.

Исходные данные.

Аргументы запроса

Что означают первые 4 пункта, можно прочитать здесь.

  1. Token.
  2. Server
  3. Маршрут
  4. КонечнаяТочка
  5. _Заголовок — title в WordPress
  6. ИмяФайла — полный путь картинки на диске, например: C:\Foto\media.jpg
  7. Описание — description в WordPress
  8. альт_текст — alt_text в WordPress
  9. м_описание — caption в WordPress
  10. РасширениеФото — mime_type в WordPress, расширение файла 
  11. Слаг — slug в WordPress, временное имя файла, если всё хорошо, становится именем.

Аргументы с 5 по 11 должны присутствовать в реквизитах элемента справочника (иной сущности) 1С. Можно иные данные, как вам будет удобнее.

Важное замечание: с самого начала, делал реквизиты на английском, как в WordPress. Однако в последствии столкнулся с тем, что многие "аглицкие" названия зарезервированы самой 1С, про этот момент забыл. Поэтому пришлось делать структуру перевода с "Русского" на "Английский" и обратно.

 

has been added to your cart:
Оформление заказа