Як завантажити каталог з WooCommerce: адреса сайту й ключі REST API

28 хв

Elbuz забирає каталог і замовлення вашого магазину на WooCommerce напряму через REST API, без файлів, і тримає товари в базовому каталозі поруч з іншими каналами продажу.

Коли це знадобиться:

  • Каталог уже є на сайті WordPress — товари, варіації, дерево категорій, бренди, фото й SEO-тексти приїдуть у картки.
  • Ціни й наявність ведете за прайсами постачальників — Elbuz рахує їх у себе, а окремий шаблон вивантажує назад на сайт.
  • Сайт — не єдиний канал — товар редагуєте в одному місці, зміни розходяться на маркетплейси.
  • Замовлення сайту мають іти в одну чергу — кожне лягає документом «Замовлення покупця».

З чого почати: створіть ключ REST API у WooCommerce.

Що вміє підключення WooCommerce

Де це і хто має доступ

Меню
Довідники → Операції → Завантаження даних
Шаблон
новий шаблон → тип «WooCommerce»; один шаблон — один сайт
Право доступу
вікно «Завантаження даних» у «Правах груп»
Підготувати
адресу сайту з https, consumer key і consumer secret
Форма API-підключення WooCommerce у шаблоні «Мій сайт WooCommerce»
1Адреса магазину
2Consumer key
3Consumer secret
4Кнопка «Перевірити підключення»
  1. Адреса магазину — посилання на ваш сайт WooCommerce, наприклад https://store.com.
  2. Consumer key — публічний ключ REST API з розділу «WooCommerce → Налаштування → Додатково → REST API».
  3. Consumer secret — секретний ключ тієї ж пари API-ключів.
  4. Кнопка «Перевірити підключення» — перевіряє введені дані без запуску завантаження.

Як працюють шаблони завантаження загалом — огляд завантаження даних.

Що потрібно від WooCommerce: адреса й пара ключів

Застосунку розробника чи коду прив'язки в WooCommerce немає. Потрібні всі три значення:

  • Адреса магазину — повний URL сайту, наприклад https://store.com. Обов'язково через https.
  • Consumer key — ключ доступу, починається з ck_.
  • Consumer secret — секрет, починається з cs_.

Де взяти ключі: крок за кроком

ДеЩо зробити
WordPressНалаштування → Постійні посилання: міняти нічого не треба, підійде будь-який режим, зокрема й «Простий» (Plain)
WooCommerceWooCommerce → Налаштування → Додатково → REST API → «Додати ключ»
Там самоЗаповнити опис, обрати користувача, від імені якого працюватиме ключ, і рівень доступу
ElbuzВікно завантаження → ваш шаблон «WooCommerce» → картка «Підключення» → поля адреси, Consumer key і Consumer secret

Після створення WooCommerce покаже consumer key і consumer secret — скопіюйте обидва, бо секрет показується лише раз. Загублений ключ не відновлюють: створюють новий і відкликають старий.

Читання (Read) — досить, щоб забирати каталог. Читання/Запис (Read/Write) — для замовлень і зворотного оновлення цін та залишків на сайті; дайте його одразу, щоб потім не перевипускати ключ. Заведіть під інтеграцію окремого користувача WordPress: так видно, хто звертався до магазину, і доступ легко відкликати.

Якщо в WordPress стоїть режим постійних посилань «Простий», звичайна адреса REST API магазину (/wp-json/wc/v3/…) не відповідає. Elbuz це розпізнає сам: повторює запит через запасну адресу ?rest_route=/wc/v3/… і далі весь прогін працює через неї.

Офіційна інструкція WooCommerce: WooCommerce REST API — там же описано керування ключами та їх відкликання.

Як підключити

  1. Створіть шаблон типу «WooCommerce» і в картці «Підключення» введіть адресу, consumer key і consumer secret.
  2. Натисніть «Перевірити підключення» — вона скаже, чи приймає сайт ваші ключі, ще до першого завантаження.
  3. У картці «Вибір даних для завантаження» увімкніть «Товари», за потреби «Фото» й «Замовлення», збережіть і запустіть.

Що переноситься в картку

Дані WooCommerceПоле картки в Elbuz
назва товаруНазва (для варіації — «Назва — S / Black»)
описПовний опис
короткий описКороткий опис
бренд товаруВиробник
skuАртикул
GTIN / EAN із додаткових полівШтрихкод (лише цифри)
regular_price / sale_priceЦіна (акційна має перевагу)
regular_price за наявності акціїСтара ціна
stock_quantity або статус наявностіЗалишок
статус publishАктивність картки (чернетка приходить вимкненою)
мітки товаруМітки
дерево категорійКатегорія — повним шляхом
slugSEO-адреса (ЧПУ)
вагаВага
SEO-заголовок і опис (Yoast / Rank Math)Meta title і meta description
звичайні атрибути товаруХарактеристики
атрибути варіаціїОпції варіанта
галерея товару + фото варіаціїЗображення — за увімкненої галочки «Фото»
ідентифікатори товару й варіаціїКлючі прив'язки до сайту
  • Ціна — акційна ціна сайту стає ціною картки, а звичайна — «старою ціною», тож знижку видно так само, як на вітрині.
  • Залишок — з увімкненим обліком складу переноситься точна кількість; без обліку WooCommerce знає лише «є / немає», і в картку приїжджає 1 або 0.
  • Штрихкод — власного поля GTIN у WooCommerce немає, тому Elbuz шукає його в додаткових полях популярних плагінів і лишає тільки цифри.
  • SEO — із Yoast SEO або Rank Math заголовок і опис сторінки товару переїжджають у картку.

Категорії, бренди й варіації

Категорії приходять повним шляхом: Elbuz окремо читає дерево категорій магазину, тож структура сайту повторюється в базовому каталозі. Бренд стає виробником.

Варіації (розміри, кольори, комплектації) приходять окремими картками з назвою на кшталт «Назва товару — S / Black», зі своєю ціною, залишком і артикулом; варіації одного товару зв'язуються в сім'ю. Осі варіації (Розмір, Колір) стають опціями, звичайні атрибути — характеристиками.

Чия ціна лишиться в картці

Порядок запису ціни жорсткий:

  1. Прогін записує ціну з сайту.
  2. Коли всі сторінки зібрані, по щойно створених картках відпрацьовує націнка базового каталогу — рахує ціну від закупівельної, лише там, де закупівельна більша за нуль. WooCommerce закупівельної не віддає, тож у новій картці лишається ціна сайту. Наявних карток цей крок не торкається.
  3. Останнім прогін перераховує поля за формулами — рядок «Оновлення значень на основі формул». Ідуть лише формули із застосуванням під час завантаження; якщо формула рахує ціну, останнє слово за нею.

«Фіксована ціна» і «Не оновлювати» захищають картку і від націнки, і від запису ціни імпортом. Різниця: «Фіксована ціна» закріплює тільки ціни, «Не оновлювати» — картку цілком.

Категорія нової картки й виробник

Категорію нової картки програма шукає в три кроки: ваша категорія з таким самим повним шляхом → категорія з такою самою назвою будь-де в дереві (від листа до кореня) → нова гілка цілком. Тому дублів на кшталт «Ноутбуки (2)» не з'являється, доки назви збігаються.

Схема стосується лише нових карток: у вже заведеної картки основну категорію прогін не міняє. Нижня гілка пояснює, чому за частковим збігом назви нова гілка не створюється
НіТакТакНіТакНіНова картка з сайтуУ товару на сайтіє категорія?Службова категорія «Товари -woocommerce»,нова — вимкнена і безвивантаженьЗ кількох категорій товарубереться найглибша,шлях складається з деревамагазинуЄ ваша категоріяз тим самим повним шляхом?Картка лягає в неїЄ категорія з назвою останньоїланкиабо однієї з ланок вище?Картка лягає в найближчузнайдену за назвоюСтворюється вся гілка шляху,картка лягає в останню ланку
  • Дія або результат
  • Розвилка: далі шлях залежить від відповіді

Товари без категорії лягають у службову «Товари - woocommerce» — вимкнену й без участі у вивантаженнях. Переносьте з неї картки вільно: основну категорію наявної картки прогін не переписує, а виписаних документів перенесення не змінює. Видаляти саму категорію, поки в ній товари, не можна — вони підуть разом із нею (службові категорії).

Виробник — бренд товару WooCommerce; брендів немає — поле порожнє. Новий бренд додається в довідник сам. Назву бренда міняйте на боці WooCommerce: перейменований в Elbuz бренд прогін заведе ще раз під старою назвою.

Що робить повторний прогін із вашими правками

Кожен запуск — повне дзеркало каталогу сайту: прогін проходить усі сторінки товарів, тож правки в Elbuz живуть до наступного оновлення, без попередження. Добору «тільки змінене» для каталогу немає.

  • Перезаписуються з сайту: назва, повний і короткий опис, ціна, стара ціна, кількість і наявність, артикул, штрихкод, вага, виробник, мітки, SEO-заголовок і опис, активність.
  • Порожнє не стирає: порожнє поле чи нуль із сайту лишає попереднє значення. Закінчилась акція — «Стара ціна» в картці лишається колишньою. Нулем і порожнім перезаписуються тільки кількість і активність. Наявність рахується з кількості: більше нуля — «В наявності», нуль — «Немає на складі».
  • Не чіпає у вже заведеної картки: фото (галерея заливається лише при створенні), характеристики (нові атрибути не дописуються), місце в дереві категорій, закупівельну ціну.

Закріпити картку цілком — перемикач «Не оновлювати» у товарі (він же колонка «Не оновлювати (прапор)» у вікні «Товари», ставиться прямо в сітці). Лише ціну й стару ціну — «Фіксована ціна». Детальніше: як закріпити своє значення.

Група перемикачів «Захист під час імпорту» в картці товару
1Не оновлювати
  1. Не оновлювати — товар виключається з оновлення під час завантаження.

Картка шукається за назвою, а не за ідентифікатором товару на сайті (він зберігається лише для зворотного вивантаження).

Змінили назву на сайті — прогін заведе поряд другу картку, стара висітиме зі старими цифрами. Змінили в Elbuz — картка знайдеться, назва повернеться з сайту. Для варіації звіряється повна назва з ярликом «Назва — S / Black», тож перейменування розміру чи кольору теж дає нову картку.

Верхня розвилка — назва: від неї залежить, оновиться ваша картка чи поряд з'явиться нова. Ліва гілка показує, чому галочку «Фото» вмикають до першого прогону
НіТакНіТакТакНіТовар або варіаціяприйшли в прогоніЄ картка з такою самою назвою?Для варіації — разом із ярликом«S / Black»Нова картка: поля з сайту,характеристики й опції варіаціїУвімкнено «Фото»?Галерея товару й фото варіаціїзаливаються в карткуКартка без фото —пізніше вони до неї не доїдутьУ картці ввімкнено«Не оновлювати»?Картка лишається без змінНазва, описи, залишок, наявністьі активність — з сайтуФото, характеристики й основнакатегоріяне чіпаються
  • Дія або результат
  • Розвилка: далі шлях залежить від відповіді

Товар зник із сайту або став чернеткою

Що сталося на сайтіЩо буде з карткою в Elbuz
Товар видалилиЛишається як була: з останньою ціною й залишком, увімкненою, без рядка в журналі. Прибирайте руками — інакше вона їде у вивантаження
Товар у чернетці, приватний чи в кошикуНаступний прогін вимикає картку; увімкнена вона тільки в стані publish
Товар знову опублікованоКартка вмикається

Галочки «видаляти те, чого немає в джерелі» для WooCommerce немає. Загальне правило — товар зник із джерела.

Зняли «Активність» вручну, а на сайті товар опублікований — наступний прогін увімкне картку назад. Утримати її вимкненою можна лише позначкою «Не оновлювати». Саме зняття активності нічого не видаляє, але вимкнена картка не потрапляє у вивантаження: новий шаблон вивантаження за замовчуванням бере лише активні товари.

Як приймати замовлення WooCommerce

Те саме підключення забирає й замовлення — з ключем на Читання/Запис і ввімкненою галочкою «Замовлення». Хочете тільки товари — лишіть її вимкненою.

Замовлення лягає документом «Замовлення покупця», непроведеним: залишок і резерв не зміняться, поки документ не проведуть. Особливості WooCommerce:

  • Статус документа — зі стану замовлення (pending, processing, on-hold, completed, cancelled, refunded, failed) через зіставлення статусів у картці шаблону. Незіставлений стан — перший статус довідника, «Новий».
  • Ознака оплати — з дати оплати: є дата — у зіставлення йде paid, немає — unpaid.
  • Служба доставки — з першого рядка доставки замовлення, разом із назвою на сайті.
  • Рядок замовлення шукає картку за ідентифікатором варіації, а якщо варіації немає — товару. Тому каталог завантажте раніше або тим самим прогоном.

Перший прогін забирає всі замовлення в будь-якому стані, наступні — змінені після дати останнього завантаженого (за Гринвічем, як віддає WooCommerce), і оновлюють уже заведені документи. Дубля не буде: документ шукається за ідентифікатором замовлення разом із кодом джерела. У журналі — рядок «Отримано замовлень:». Загальна механіка — завантаження замовлень.

Оновлення за розкладом

Коли підключення перевірено, поставте шаблон на розклад кнопкою налаштування завдання у формі: ціни й залишки оновлюватимуться, нові товари додаватимуться. Ціни й залишки на сайт повертає окремий шаблон WooCommerce у вікні «Вивантаження даних» зі своїм розкладом (шаблони вивантаження).

Кожна сторінка лишає в журналі рядок «WooCommerce: сторінка каталогу 3, отримано товарів: 300», у кінці — «WooCommerce: каталог завантажено, товарів: N». Загальне про журнал — як перевірити, що завантаження пройшло.

Скільки тягнеться за один прогін

Стелі на кількість товарів немає. Порції фіксовані:

ЩоПорція
Товари100 на сторінку — максимум WooCommerce
Варіації100 на сторінку, окремим запитом на кожен товар із варіаціями
Категорії100 на сторінку, дерево читається раз на початку прогону
Замовлення100 на сторінку
Запис у каталогпачки по 500 позицій

Магазин із варіаціями робить до сайту більше звернень, ніж такий самий магазин простих товарів, тож проходить довше — це не зависання. Вікно можна закривати: журнал живе в Центрі операцій. Тривалість видно в колонці «Витрачено часу» і в «Історії запусків».

Сценарії

Усі галочки нижче — у картці «Вибір даних для завантаження», крім останнього сценарію: там позначка стоїть у самому товарі.

Картка «Вибір даних для завантаження» у формі шаблону WooCommerce
1Товари
2Фото
3Замовлення
  1. Товари — завантажувати каталог товарів із магазину.
  2. Фото — завантажувати зображення товарів.
  3. Замовлення — завантажувати замовлення з магазину.

Забрати каталог сайту, а замовлення лишити на сайті

Що ввімкнути. «Товари»; «Фото» — якщо потрібні зображення. «Замовлення» — вимкнено.

Що вийде. Простий товар стає карткою, товар із варіаціями — сім'єю карток. Категорія приходить повним шляхом, бренд стає виробником, до замовлень прогін не звертається. Закупівельної ціни не буде — WooCommerce її не віддає.

Фото з сайту — вирішити до першого прогону

Що ввімкнути. «Фото» — ще до першого запуску шаблона.

Що вийде. Кожна нова картка отримує галерею товару, а картка варіації — спершу власне фото варіації, далі галерею без повторів. Галочка, ввімкнена після першого прогону, додасть фото лише новим карткам.

Подивитися, як лягає каталог, на перших сторінках

Що натиснути. Запустити шаблон і, коли в журналі з'являться рядки «WooCommerce: сторінка каталогу…», натиснути «Зупинити» в Центрі операцій.

Що вийде. Прогін дочитає поточну сторінку (до 100 товарів), запише набране, відпрацює націнку новим карткам і закриється рядком «WooCommerce: каталог завантажено, товарів: N». Першими приходять товари з найменшими ідентифікаторами на сайті. Записане лишається в картках; наступний повний прогін знайде їх за назвою без дублів.

Приймати замовлення сайту в Elbuz

Що ввімкнути. «Замовлення» разом із «Товари» або після завантаження каталогу — якщо ввімкнено обидва, каталог іде першим.

Що вийде. Кожне замовлення стає документом «Замовлення покупця»; наступні прогони добирають змінені й оновлюють їх без другого документа (замовлення).

Правити картку в Elbuz так, щоб прогін її не переписував

Що ввімкнути. «Не оновлювати» в картці товару, група «Захист під час імпорту».

Що вийде. Прогін картку знаходить, але не змінює в ній ні полів, ні наявності, ні характеристик; зміни з сайту в неї не прийдуть, доки позначку не знімете. Від другої картки після перейменування товару на сайті позначка не рятує.

Що робити, коли WooCommerce не завантажується

Що пише журнал і що з цим робити
Що ви бачитеЧому такЩо зробити
«WooCommerce: вкажіть адресу магазину та ключі API (consumer key/secret)» Одне з трьох полів підключення порожнє — прогін до сайту навіть не звертався Заповнити всі три поля в картці «Підключення» (що потрібно)
«WooCommerce: помилка API —» і текст від магазину Сайт відмовив: ключі не підходять або скопійовані з пробілами, адреса не через https чи із зайвим шляхом, прав не вистачає, магазин не відповів Натиснути «Перевірити підключення» — вона звертається тими самими ключами й показує відмову одразу (де взяти ключі)
Ключі точно правильні, а перевірка підключення повертає помилку REST API вимкнено або зовнішні звернення блокує хостинг чи плагін безпеки Увімкнути REST API й дозволити зовнішні запити до сайту
«WooCommerce: каталог завантажено, товарів: 0» Сайт відповів, але товарів не віддав: каталог порожній або ключ виданий під обмежений доступ Перевірити права ключа в WooCommerce і те, що в шаблоні ввімкнено «Товари»
У каталозі два однакові товари з різними назвами Товар або варіацію перейменували на сайті — прогін завів нову картку Видалити стару картку (якщо прогін зробив не те)

Якщо прогін обірвався

Товари лягають у каталог пачками по 500, тож після обриву частина вже оновлена, решта — зі старими даними. Повтор безпечний: картки знайдуться за назвою, дублів не буде ні в каталозі, ні в замовленнях, а наступний успішний прогін доробить завершальну націнку. Загальна механіка — якщо прогін обірвався.

Відповіді «забагато запитів», «сервіс недоступний» чи сторінку захисту програма переживає сама: до чотирьох спроб із паузою, яку назвав сайт (не довше 30 с), або 2, 4, 6 і 8 с. Відповіді чекає 180 с, з'єднання — 30 с. Далі прогін зупиняється з червоним рядком «WooCommerce: помилка API —».

Цикл по сторінках: вийти з нього можна трьома шляхами — сторінки скінчилися, натиснуто «Зупинити» або сайт відповів помилкою. Лише в останньому випадку завершального кроку з націнкою не буде
НіТакНі, помилкаТакТакНіЗапуск шаблона WooCommerceз галочкою «Товари»Заповнені адреса магазину,consumer key і consumer secret?Червоний рядок «вкажіть адресумагазину та ключі API»,до сайту прогін не звертаєтьсяДерево категорій магазинучитається один разЗапит сторінки товарів —до 100 штукСайт віддав сторінку?Червоний рядок «WooCommerce:помилка API —»,прогін обривається беззавершального крокуТовар із варіаціями — окремийзапит варіацій,кожна варіація стає своєю карткоюКожні 500 позиційзаписуються в каталогЄ ще сторінкиі не натиснуто «Зупинити»?Дописується решта пачки,новим карткам — націнкаРядок «WooCommerce: каталогзавантажено, товарів: N»
  • Дія або результат
  • Розвилка: далі шлях залежить від відповіді

Якщо прогін зробив не те

Картки, заведені цим підключенням, відбираються у вікні «Товари» за колонками «Джерело: назва» і «Джерело: код» (woocommerce) і видаляються пакетом — так прибирають і дублі після перейменування. Перезаписані картки шукайте за «Дата оновлення» (якщо завантажили не те).

Масово відкотити завантаження в Elbuz нема чим. Але прогін дзеркалить сайт, тож правильні дані повертають на боці WooCommerce і повторюють завантаження. Попередню ціну видно в блоці «Історія ціни товару», якщо ведення історії цін увімкнене.

Часті запитання

Які права дати ключу — Читання чи Читання/Запис?

Для каталогу досить Читання. Для замовлень і вивантаження цін та залишків назад на сайт — Читання/Запис (де взяти ключі).

Загубив consumer secret — де його подивитися?

Ніде: WooCommerce показує секрет лише раз. Створіть новий ключ, впишіть його в шаблон, а старий відкличте.

Чи затре повторний прогін мої правки в картці?

Так: назву, описи, ціну, залишок, бренд і активність прогін поверне з сайту без попередження. Фото, характеристики й категорію наявної картки не чіпає. Закріпити — «Не оновлювати» або «Фіксована ціна» (повторний прогін).

Чому в картках немає закупівельної ціни?

WooCommerce її не зберігає. Закупівельна потрапляє в картку з прайсу постачальника, і від неї рахуються правила націнки (чия ціна лишиться).

Додав фото на сайті — чому воно не з'явилося в картці?

Фото й характеристики заливаються лише при створенні картки; у вже заведеної прогін їх не оновлює (повторний прогін).

Чи можна видалити категорію «Товари - woocommerce»?

Тільки порожню: видалення категорії забирає всі товари, у яких вона основна. Спершу перенесіть картки у свої категорії. Наступний прогін створить службову знову, щойно прийде товар без категорії (категорія й виробник).

Як затягнути каталог у систему, щоб потім залишки й ціни оновлювалися на сайті?

Двома шаблонами на одному ключі з правами Читання/Запис: шаблон WooCommerce у «Завантаженні даних» забирає каталог, окремий шаблон WooCommerce у «Вивантаженні даних» зі своїм розкладом оновлює ціни й залишки на сайті.

Суміжні теми

Чи була стаття корисною?