Список товаров
Получает список товаров. Список можно фильтровать и производить поиск.
Путь: /wp-json/usam/v1/products
Метод запроса: GET, POST
- add_fields (массив) (не обязательно) дополнительные поля, которые нужно получить;
- fields (строка) (не обязательно) формат возвращаемых данных; ids — вернет массив с ID постов, id=>name — вернет объект где ключ ID товара, а значение его имя.
- search (строка) (не обязательно) — поиск по номеру товар, по артикулу товара, по названию товара или его части;
- tax_query — Параметры запроса для таксономий.
- status (массив) (не обязательно) — массив кодов статусов;
- productmeta — (массив) фильтр по свойствам товара, которые хранятся в wp_usam_product_meta.
- postmeta_query фильтр по свойствам товара, которые хранятся в wp_usam_post_meta.
- from_price (число) (не обязательно) — цена больше либо равно;
- to_price (число) (не обязательно) — цена меньше либо равно;
- from_stock (число) (не обязательно) — остаток больше либо равно;
- to_stock (число) (не обязательно) — остаток меньше либо равно;
- from_views (число) (не обязательно) — просмотров больше либо равно;
- to_views (число) (не обязательно) — просмотров меньше либо равно;
- count (число) (не обязательно) — количество, по умолчанию 10;
- paged (число) (не обязательно) — страница списка;
- orderby (строка) (не обязательно) — сортировать по полю;
- order (строка) (не обязательно) — направление сортировки ASC или DESC;
fields может содержать:
- sku — артикул товара
- virtual — вид товара
- total_balance — доступный остаток (общий остаток мину резерв)
- stock — общий остаток
- code — внешний код товара
- weight — вес товара
- barcode — штрих код товара
- views — количество просмотров
- rating — рейтинг товара
- rating_count — количество проголосовавших
- underprice — наценка товара
- price — цена товара
- old_price — старая цена товара
- storages — получить массив остатков, где ключ номер склада, а значение остаток
- external_storages — получить массив остатков, где ключ внешний код склада, а значение остаток
- prices — получить массив цен, где ключ код типа цены, а значение цена
- external_prices — получить массив цен, где ключ внешний код типа цены, а значение цена
- category — получить массив объектов категорий
- brand — получить объект бренда
- attributes — массив атрибутов товара
- thumbnail — ссылка на основную фотографию
Пример запроса
получить два товара и добавить к данным бренд, категории, цены и остатки:
/wp-json/usam/v1/products
{"add_fields":["brand","category","prices","storages"],"count":2}
Возвращает
Ответы в формате JSON
{
"count": 21,
"items": [
{
"ID": 189,
"post_author": "1",
"post_date": "2018-03-07 21:06:34",
"post_date_gmt": "2018-03-07 19:36:34",
"post_content": "",
"post_title": "Программа для ЭВМ "Универсам". Лицензия Бизнес",
"post_excerpt": "",
"post_status": "publish",
"comment_status": "closed",
"ping_status": "closed",
"post_password": "",
"post_name": "programma-dlya-evm-upravlenie-internet-magazinom-licenziya-biznes",
"to_ping": "",
"pinged": "",
"post_modified": "2021-07-29 23:18:05",
"post_modified_gmt": "2021-07-29 21:18:05",
"post_content_filtered": "",
"post_parent": 0,
"guid": "http://wp-universam.ru/products/programma-dlya-evm-upravlenie-internet-magazinom-licenziya-biznes/",
"menu_order": 3,
"post_type": "usam-product",
"post_mime_type": "",
"comment_count": "0",
"filter": "raw",
"brand": "",
"category": [
{
"term_id": 6,
"name": "Лицензии",
"slug": "licenses",
"term_group": 0,
"term_taxonomy_id": 6,
"taxonomy": "usam-category",
"description": "",
"parent": 0,
"count": 5,
"filter": "raw"
}
],
"prices": {
"tp_2": 49900,
"tp_1": 49900
},
"storages": {
"1": "40"
}
},
{
"ID": 192,
"post_author": "1",
"post_date": "2018-03-07 21:12:34",
"post_date_gmt": "2018-03-07 19:42:34",
"post_content": "",
"post_title": "Программа для ЭВМ "Универсам". Лицензия Старт",
"post_excerpt": "<p>Лицензия Старт прекрасно подает для интернет магазина не большой компании или как начала освоения платформы и в будущем перейти на другие лицензии с большими возможностями. В лицензию включены все инструменты для начала работы интернет-магазина. В комплект входит стандартная бесплатная тема, готовая к работе.</p>",
"post_status": "publish",
"comment_status": "open",
"ping_status": "closed",
"post_password": "",
"post_name": "programma-dlya-evm-upravlenie-internet-magazinom-licenziya-start",
"to_ping": "",
"pinged": "",
"post_modified": "2020-05-15 11:14:20",
"post_modified_gmt": "2020-05-15 09:14:20",
"post_content_filtered": "",
"post_parent": 0,
"guid": "http://wp-universam.ru/products/programma-dlya-evm-upravlenie-internet-magazinom-licenziya-start/",
"menu_order": 1,
"post_type": "usam-product",
"post_mime_type": "",
"comment_count": "0",
"filter": "raw",
"brand": "",
"category": [
{
"term_id": 6,
"name": "Лицензии",
"slug": "licenses",
"term_group": 0,
"term_taxonomy_id": 6,
"taxonomy": "usam-category",
"description": "",
"parent": 0,
"count": 5,
"filter": "raw"
}
],
"prices": {
"tp_2": 5900,
"tp_1": 5900
},
"storages": {
"1": "6"
}
}
]
}
productmeta строится так же как meta_query.
- key(строка|массив)
Ключ поля. Можно указать несколько ключей в массиве. - compare_key(строка)
Как сравнивать указанное в key значение. Может быть:=
— равно.!=
— не равно.LIKE
— содержит указанную подстроку.NOT LIKE
— НЕ содержит указанную подстроку.IN
— равно одному из значений.NOT IN
— НЕ равно одному из значений.REGEXP
— совпадает с регулярным выражениме.NOT REGEXP
— НЕ совпадает с регулярным выражениме.RLIKE
— синоним REGEXP.EXISTS
— алиас=
.NOT EXISTS
— алиас!=
.
- type_key(строка)
Тип данных MySQL, который нужно использовать в функции CAST(). Если указано, то значение колонкиmeta_key
будет сначала преобразовано в указанный тип и только потом будет сравниваться с указанным значением. Может быть:BINARY
— нужно когда в регулярных выражениях важен регистр символов.
- value(строка/массив)
Значение поля. Указывать не нужно, если при сравнении используется: ‘EXISTS’ или ‘NOT EXISTS’ (с версии 3.9). - compare(строка)
Как сравнивать указанное в value значение. Может быть:=
— равно.!=
— не равно.>
— больше.>=
— больше или равно.<
— меньше.<=
— меньше или равно.LIKE
— указанная в value подстрока имеется в строке. Как ‘%значение%’ в sql запросе.NOT LIKE
— тоже что LIKE только наоборот.IN
— в value указываются несколько значений в массиве и поиск идет хотя бы по одному из значений.NOT IN
— любое значение, кроме тех что указанны в виде массива в value.BETWEEN
— в value указываются 2 значения в массиве: большее и меньшее и поиск идет между этих значений. , например: ‘value’ => array(5, 25) — от 5 до 25 (включительно).NOT BETWEEN
— любое значение, за пределами диапазона указанного в value, например: ‘value’ => array(5, 25) — меньше 5 и больше 25.EXISTS
— выведет всё где существует указанный в ‘key’ ключ. ‘value’ не указывается в этом случае.NOT EXISTS
— выведет всё где указанный в ‘key’ ключ не существует. ‘value’ не указывается в этом случае.REGEXP
— в value указывается регулярное выражение для поиска, например: ‘value’ => ‘^bar’, (найдет строку: ‘bar is’).NOT REGEXP
— в value указывается регулярное выражение для поиска, найдет все что не входит в это выражение.RLIKE
— синоним REGEXP.
- type(строка)
тип произвольного поля (если, например в поле указываются только числа то нужно использовать NUMERIC, чтобы числа не сравнивались как строки).Указанный тут тип напрямую передается в mysql функцию CAST().Может быть:NUMERIC
— целые числа. Можно указать точностьNUMERIC(p,s)
.DECIMAL
— дробные числа. Можно указать точностьDECIMAL(p,s)
. Например: DECIMAL(5,2) — число с макс 5 цифрами всего (3 до разделителя) и 2 цифры после разделителя.SIGNED
— целые числа, положительные и отрицательныеUNSIGNED
— целые числа, только положительныеCHAR
— строка не чувствительна к региструBINARY
— строка чувствительная к региструDATETIME
— дата и времяDATE
— только датаTIME
— только время
CHAR
.
Примеры productmeta
поиск по артикулу
{productmeta: [{key:'sku', value:4343, compare: 'LIKE'}]}
найти товар по внешнему коду
{productmeta: [{key:'code', value:4343, compare: '='}]}
tax_query может принимать следующий ряд вложенных аргументов:
- relation(строка)
Как выбирать записи из указанных таксономий. Может быть:AND
— записи которые одновременно входят в указанные термины таксономии.OR
— записи принадлежащие любому из указанных терминов таксономии.
- taxonomy(строка)
Название таксономии. - field(строка)
Поле которое будет указывать в параметре terms. Может быть:id
илиterm_id
— в terms указываем id терминов.name
— в terms указываем заголовок термина.slug
— в terms указываем ярлык термина.По умолчанию: ‘term_id’
- terms(число/строка/массив)
Термины таксономии, из которых нужно вывести записи. - operator(строка)
Оператор, указывающий как сравнивать указанные термины в параметре terms. Может быть:IN
— записи из указанных терминов (по умолчанию).NOT IN
— записи из всех терминов, кроме указанных.AND
— записи одновременно принадлежащие всем указанным терминам.EXISTS
— записи из таксономии (у которых есть любой термин таксономии). В этом случае параметр terms указывать не надо.NOT EXISTS
— записи НЕ из таксономии (у которых нет ни одного термина таксономии). В этом случае параметр terms указывать не надо. По умолчанию: ‘IN’
- include_children(логический)
Включать или нет посты из дочерних терминов (для древовидных таксономий). true -включить.
По умолчанию: true
Пример запроса
получить товары из категории с номерами 12 и 23
{tax_query: [{taxonomy:'usam-category', field:'id', terms:[12,23], operator: 'IN'}]}
Использование аргумента relation=OR
Выведем товары, которые находятся в категории с slug kastruli
или которые имеют каталог main. Для этого используем аргумент relation
:
{tax_query: [
{relation: 'OR'},
{taxonomy: 'usam-category', field:'slug', terms: [ 'kastruli'] },
{taxonomy: 'usam-catalog', field: 'slug', terms: [ 'main' ] }
}
Многоуровневый сложный запрос с использование оператора relation=OR
Допустим, нам нужно получить товары одной из групп.
Например, надо получить все кастрюли бренда ballarini или все сковороды бренда luminarc:
В этом примере первый оператор relation=OR влияет на первые дочерние вложенные массивы. А оператор relation=AND во вложенных массивах влияет на массивы вложенных массивов.
{tax_query: [
{relation:'OR'},
[
{relation: 'AND'},
{taxonomy: 'usam-brands', field: 'slug', terms:[ 'ballarini' ]},
{taxonomy: 'usam-category', field: 'slug', 'terms': [ 'pans' ]}
],
[
{relation:'AND'},
{taxonomy: 'usam-brands', field: 'slug',
terms: [ 'luminarc' ]},
{taxonomy: 'usam-category', field: 'slug', 'terms': [ 'frying-pan' ]}
]
}
Получить товар
Путь: /wp-json/usam/v1/product/(id товара)
Метод запроса: GET
Пример запроса
Получить данные товара с id 10
/wp-json/usam/v1/product/10
Загрузить фото для товара
Путь: /wp-json/usam/v1/product/(id товара)/images
Метод запроса: POST
- file (файл) (обязательно) картинка;
Массовое создание или обновление товаров
Путь: /wp-json/usam/v1/products
Метод запроса: PUT
- items — массив содержащий данные для создания (обязательный)
Значения items смотрите ниже.
Пример запроса создания товара
/wp-json/usam/v1/products
{"items":[{
"post_title":"Кастрюля 26 см",
"post_status":"publish",
"weight":1,
"sku":"436ds",
"code":"dzfst54",
"barcode":3426470022811,
"thumbnail":"http://radov39.ru/wp-content/uploads/2014/03/kastryulya-clow-cook-red-29-sm_1-60x60.jpg",
"prices":{"price_sdff":2300,"price_ert":2300},
"storages":{"fgg":0,"ghjk":20},
"category":["frrgfghg","gdfhjhjk"],
"attributes":[{"fgg65":"Железо"},{"xfgfj":20},{"dfgfth":"Красный"}]
}]}
Пример запроса обновления товара
/wp-json/usam/v1/products
{"items":[{
"code":"dzfst54",
"post_title":"Кастрюля красная 26 см",
"post_status":"publish",
"barcode":3426470022811,
"prices":{"price_sdff":2300,"price_ert":2300},
"storages":{"fgg":0,"ghjk":20},
"category":["rt25","rt26"],
"brand":"pr1090",
"attributes":[{"fgg65":"Железо"},{"xfgfj":20},{"dfgfth":"Красный"}]
}]}
Данные, которые содержит items для создания и обновления товара
post_title (строка) (обязательно)
Название товара.
ID (число) (не обязательно)
Номер товара в базе. Используется только для обновления.
post_name (строка) (не обязательно)
Ссылка товара.
post_excerpt (строка) (не обязательно)
Краткое описание товара.
post_content (строка) (не обязательно)
Основной контент товара.
menu_order (число) (не обязательно)
Порядок сортировки товара. Если используется ручная сортировка, то сортируется по этому числу.
post_date (дата время) (не обязательно)
Дата создания товара.
post_status (строка) (не обязательно)
Код статуса товара.
post_author (число) (не обязательно)
Автор создания товара.
weight (число) (не обязательно)
Вес товара.
sku (строка) (не обязательно)
Артикул товара.
virtual (строка) (не обязательно)
Тип товара. По умолчанию, тип «физический товар» (product).
- product — физические товары
- service — услуга
- subscription — виртуальный товар
- electronic_product — подписка
code (строка) (не обязательно)
Внешний код товара, для последующего обновления
barcode (число) (не обязательно)
Штрих код товара.
views (число) (не обязательно)
Количество просмотров товара.
rating (число) (не обязательно)
Рейтинг товара.
rating_count (число) (не обязательно)
Количество количество проголосовавших.
unit (число) (не обязательно)
Единица измерения товара.
unit_measure (число) (не обязательно)
Код единицы измерения товара. По умолчанию thing (штуки).
thumbnail (строка) (не обязательно)
Ссылка для миниатюры (главной фотографии).
images (массив строк) (не обязательно)
Массив ссылок на картинки товара.
not_limited (число) (не обязательно)
Установить неограниченный запас.
storages (объект) (не обязательно)
Объект, в котором ключ id или внешний код склада, а значение остаток на складе.
prices (объект) (не обязательно)
Массив объектов, в котором ключ код цены, наценка или старая цена.
- price_{Кодцены} обновление цены
- old_price_{Кодцены} обновление старой цены(только если задана акция по товару иначе не сохранится) (не обязательно)
- underprice_{Кодцены} id наценки (не обязательно)
Где {Кодцены} код цены, например, для обновления цены и наценки у типа цены с кодом r12
{prices:[{"price_r12":"7676","underprice_r12":1}]}
category (массив) (не обязательно)
Массив внешних кодов категории, к каким нужно прикрепить товар.
brand (строка) (не обязательно)
Внешний код бренда.
attributes (массив) (не обязательно)
Массив, в котором ключ внешний код атрибута, а значение массива значение атрибута.
crosssell (массив строк) (не обязательно)
Массив внешних кодов товаров для создания связи с сопутствующими товарами.
similar (массив строк) (не обязательно)
Массив внешних кодов товаров, для создания связи с аналогами.
Обновить цены
Обновляет цены у товаров
Путь: /wp-json/usam/v1/products/price
Метод запроса: PUT
- items — массив содержащий данные для обновления (обязательный)
Данные, которые содержит items для обновления цен
price (число) (обязательно)
Цена товара.
external_code_price (строка) (не обязательно)
Внешний код цены.
code_price (строка) (не обязательно)
Код цены.
code (строка) (обязательно)
Код товара.
обязательно используйте code_price или external_code_price в запросе
Пример запроса
Обновление цен по коду
/wp-json/usam/v1/products/price
{"items":[
{"code":"7676","price":12,"code_price":"tp_1"},
{"code":"7676","price":12,"code_price":"tp_4"}
]}
Вариант с внешними кодами цен
/wp-json/usam/v1/products/price
{"items":[
{"code":"7676","price":12,"external_code_price":"661"},
{"code":"7676","price":12,"external_code_price":"774"}
]}
Значения характеристик товаров
Получить список значений характеристик товаров
Путь: /wp-json/usam/v1/attribute_values
Метод запроса: GET
- search — поиск коду и значению(не обязательный);
- attribute_id — массив чисел или число id характеристики (не обязательный);
- attribute_external_code — внешний код характеристики, тип строка (не обязательный);
- code — массив кодов характеристик(не обязательный);
- include — id значений которые нужно получить (не обязательный);
- count — количество заказов, по умолчанию 10 заказов (не обязательный);
- paged — страница списка (не обязательный);
- orderby — сортировать по полю (не обязательный);
- order — направление сортировки ASC или DESC (не обязательный);
Возвращает
- items — массив значений
- count — количество значений
Пример запроса
/wp-json/usam/v1/products/price
{"items":[
{
"id": "1",
"attribute_id": "9",
"value": "не оказывается",
"code": "",
"sort": "0"
},
],
"count":100}
Список типов цен
Получить список типов цен
Путь: /wp-json/usam/v1/type_prices
Метод запроса: GET
Параметры получения данных:
- currency (строка) (не обязательно) — получить цены с указанной валютой;
- type (строка) (не обязательно) — тип цены, R -розничная или P — закупочная;
- available (число) (не обязательно) — доступность для посетителя;
- code (строка) (не обязательно) — код цены;
- orderby (строка) (не обязательно) — сортировать по полю;
- order (строка) (не обязательно) — направление сортировки ASC или DESC;