- Импорт товаров в WooCommerce из CSV
- Создание прайс-листа для импорта
- Столбцы и форматирование
- Импорт товаров в WooCommerce
- Простые товары
- Как прикрепить изображения?
- Вариативные товары
- Импорт товаров из CSV файла
- Проверка результатов импорта
- Использование REST API WC WooCommerce для импорта товара
- REST API WC WooCommerce документация
- Настройка WooCommerce REST API PHP Library
- Формат запроса/ответа REST API WC WooCommerce
- FAQ: Как при помощи REST API WC WooCommerce вывести все товары?
- FAQ: как вывести все товары в определенной категории
Импорт товаров в WooCommerce из CSV
WooCommerce имеет встроенный импортер продуктов из файла CSV. Этот инструмент поддерживает большинство типов продуктов, включая вариативные товары.
Создание прайс-листа для импорта
Стандартный импортер в WooCommerce поддерживает загрузку товаров из электронных таблиц в формате CSV. Разработчики плагина не рекомендуют выполнять импорт из Excel. Такое решение обусловлено некорректной поддержкой UTF-8.
Вместо Microsoft Excel можно использовать:
- Онлайн-редактор электронных таблиц Google Sheets,
- Бесплатное приложение для работы с электронными таблицами OpenOffice,
- Бесплатное приложение Calc в LibreOffice,
- Numbers для macOS.
В репозитории WooCommerce представлен общий список рекомендаций для успешного импорта файла CSV. Выделим наиболее важные из них:
- Файл CSV должен быть в формате UTF-8;
- При импорте логического значения используются числа 1 или 0;
- Несколько значений в поле разделяются запятыми;
- Иерархия терминов таксономии обозначается знаком > , термины разделяются запятыми;
- Изображения должны быть предварительно загружены в медиатеку или доступны в Интернете, чтобы их можно было импортировать в ваш магазин.
Столбцы и форматирование
Механизм сопоставления ячеек из электронной таблицы со свойствами товаров в WooCommerce позволяет загружать прайс-листы без предварительной обработки.
При загрузке файла плагин предложит связать ячейки со свойствами в ручном режиме. Это удобно, когда нет возможности составить отдельный файл импорта только для WooCommerce.
Для автоматической связи свойств из прайс-листа достаточно указать название столбца и сверить его с тегом из колонки Сопоставление. При загрузке такой таблицы WooCommerce свяжет информацию из файла CSV с базой данных самостоятельно.
Имя столбца | Сопоставление | Пример | Описание |
---|---|---|---|
ID | id | 100 | Если указать это значение, данные товара с этим идентификатором будут перезаписаны при импорте. |
Type | type | simple, variation, virtual | Тип продукта. Допустимые значения: простой, переменный, сгруппированный, внешний, вариантный, виртуальный, загружаемый. |
SKU | sku | iphone-12-pro-max-256, 113244905 | Обязательное поле. Наименование вариации. Создается автоматически, если отсутствует. |
Name | name | iPhone 12 Pro Max 256GB | Обязательное поле. Название товара или цифрового продукта. |
Published | status | 1 | Статус публикации товара. 1 опубликован, 0 личная публикация, -1 черновик. |
Is featured? | featured | 1 | 1 или 0. |
Visibility in catalog | catalog_visibility | visible | Допустимые значения: visible, catalog, search, hidden. |
Short description | short_description | Прочный корпус и самое долгое время работы без подзарядки среди iPhone. | Краткое описание товара. |
Description | description | Это iPhone 12 Pro Max. A14 Bionic, самый быстрый процессор iPhone. Система камер Pro, которая обеспечивает потрясающее качество снимков при слабом освещении. | Подробное описание товара. |
Date sale price starts | date_on_sale_from | 2022-06-07 18:59:00 | Дата начала действия скидки на товар. |
Date sale price ends | date_on_sale_to | 2022-06-08 09:59:00 | Дата конца действия скидки на товар. |
Tax status | tax_status | taxable | Допустимые значения: taxable, shipping, none. |
Tax class | tax_class | standard | Можно использовать любой существующий налоговый класс. |
In stock? | stock_status | 1 | Наличие товара на складе. 1 или 0. |
Stock | manage_stock или stock_quantity | 20 | Количество товаров на складе. Значение parent используется для вариаций. Если оставить пустым, управление запасами будет недоступно. |
Low stock amount | low_stock_amount | 100 | Нижний порог запаса товаров. Оставьте пустым или укажите количество. |
Backorders allowed? | backorders | 1 | Поддержка продажи товаров «под заказ». 1, 0, или notify. |
Sold individually? | sold_individually | 0 | Поддержка продажи товаров «в одни руки». 1 или 0. |
Weight (unit) | weight | 226 | Вес товара. Поддерживает только числа. |
Length (unit) | length | 160 | Длина товара. Поддерживает только числа. |
Width (unit) | width | 78 | Ширина товара. Поддерживает только числа. |
Height (unit) | height | 8 | Вес товара. Поддерживает только числа. |
Allow customer reviews? | reviews_allowed | 1 | 1 или 0. |
Purchase Note | purchase_note | Спасибо за покупку! | Текст, который будет показан пользователю после оформления заказа. |
Sale price | sale_price | 20.99 | Цена распродажи. |
Regular price | regular_price | 24.99 | Базовая цена. |
Categories | category_ids | Category 1, Category 1 > Category 2 | CSV список категорий. Символ > используется для иерархии (вложенности). |
Tags | tag_ids | Метка 1, Метка 2 | CSV список тегов. |
Shipping class | shipping_class_id | Доставка почтой | Название или класс доставки. |
Images | image_id или gallery_image_ids | https://example.com/image.jpg, https://example.com/image2.jpg | Первое изображение является главной миниатюрой. |
Download limit | download_limit | 1 | Количество допустимых загрузок или n/a. |
Download expiry days | download_expiry | 1 | Количество дней до истечения срока допустимых загрузок или n/a. |
Parent | parent_id | id:100, SKU-1 | Родительский идентификатор для вариаций. |
Grouped products | children | id:100, id:101, SKU-1, SKU-2 | Список идентификаторов. |
Upsells | upsell_ids | id:100, id:101, SKU-1, SKU-2 | Список идентификаторов. |
Cross-sells | cross_sell_ids | id:100, id:101, SKU-1, SKU-2 | Список идентификаторов. |
External URL | product_url | https://example.com/product/iphone-12-pro-max/ | URL товара. |
Button text | button_text | В корзину | Пользовательский текст для кнопки «Купить» в карточке товара. |
Position | menu_order | 1 | Порядок меню, используемый для сортировки. |
Attribute 1 name | attributes | Цвет | Ищет глобальный атрибут или использует текст, если он не найден. Чекбокс «Используется для вариаций» устанавливается автоматически. |
Attribute 1 value(s) | attributes | Красный, Золотой, Розовый | Список значений атрибута. Для вариаций требуется только 1 значение. |
Attribute 1 default | default_attributes | Золотой | Значение атрибута по умолчанию для вариативных товаров. |
Attribute 1 visible | attributes | 1 | Определяет, будет ли отображаться атрибут на вкладке «Дополнительная информация». 1 или 0. |
Attribute 1 global | attributes | 1 | Определяет, является ли атрибут глобальным. 1 или 0. |
Download 1 name | downloads | Файл для загрузки | |
Download 1 URL | downloads | document.zip |
Импорт товаров в WooCommerce
Выполним импорт товаров из файла CSV на примере товара «Футболка с логотипом». У товара есть следующие характеристики:
Создайте в панели администратора WordPress, два глобальных атрибута: цвет и размер, и укажите их значения, как показано на рисунке ниже.
После создания атрибутов приступаем к составлению таблицы с товарами.
Простые товары
Составляем файл CSV с тремя похожими простыми товарами. В результате наш прайс-лист будет выглядеть, как показано на рисунке ниже:
Как прикрепить изображения?
Для импорта картинок добавьте столбец с именем Images и укажите их прямые URL для каждого товара в таблице. Для быстрого импорта товаров, выполните предварительную загрузку картинок в медиатеку WordPress.
Вариативные товары
Так как, это один и тот же товар, только с разными характеристиками, его можно укомплектовать в вариативный товар.
Составим прайс-лист заново:
Импорт товаров из CSV файла
Выполните импорт файла в панели администратора:
Проверка результатов импорта
После выполнения импорта простых товаров в интернет-магазине будет опубликовано три футболки различающихся по размеру и цвету:
После выполнения импорта вариативных товаров будет опубликована одна футболка с тремя вариациями:
Использование REST API WC WooCommerce для импорта товара
Вопрос: Подскажите какие sql запросы использует WooCommerce для полного добавления одного товара(с картинкой). Или есть ли способ отследить какие запросы прилетают к mysql от wordpress? Ответ: Там не один запрос, а несколько, в разные таблицы. На прямую базу данных WooCommerce лучше не трогать, для это есть REST API WC.
REST API WC WooCommerce документация
Настройка WooCommerce REST API PHP Library
Устанавливаем библиотеку WooCommerce REST API PHP Library в корень сайта нашего проекта, при помощи Composer
# composer require automattic/woocommerce
Генерируем ключи согласно WooCommerce REST API. Включаем в настройках плагина WooCommerce поддержку REST API . Жмем генерировать ключи, будут созданы 2 ключа: Пользовательский ключ (Consumer Key) и Секретный код пользователя (Consumer Secret). Их обязательно нужно записать!
Тестируем подключение REST, для этого при переходе по (подставьте свой домен) https://local.wordpress.dev/wp-json/wc/v2/orders, должен вернуться JSON в браузере. В текущей версии WooCommerce API v2 возвращается ошибка 401. Если и у вас так, то проверку можно осуществить зайдя в корень и получив в ответ огромный массив Json https://local.wordpress.dev/wp-json/wc/v2 или с ключами (получим пустой Json) https://local.wordpress.dev/wp-json/wc/v2/orders?consumer_key=XXXX&consumer_secret=XXXX
Настраиваем подключение REST для PHP библиотеки (настройка для нового API REST WooCommerce 2.6 или новее). После подключения выведем все товары нашего магазина.
Формат запроса/ответа REST API WC WooCommerce
Формат ответа по умолчанию — JSON. Запросы с помощью тела сообщений используют простой JSON для установки или обновления атрибутов ресурсов. Успешные запросы возвратят статус 200 OK HTTP.
Общая информация об ответах:
Любая десятичная денежная сумма, такая как цены или итоговые суммы, будет возвращена в виде строк с двумя знаками после запятой.
Поддержка JSONP. WP REST API поддерживает JSONP по умолчанию. Ответы JSONP используют тип содержимого application/javascript. Вы можете указать обратный вызов, используя параметр ?_jsonp для запросов методом GET, чтобы получить ответ, завернутый в функцию JSON:
FAQ: Как при помощи REST API WC WooCommerce вывести все товары?
Как вывести все товары в WooCommerce — казалось бы тривиальный вопрос, но это не так просто. Для каждой версии API вывод всех товаров реализуется по разному.
Суть проблемы связана с пагинацией страниц, в последней версии по умолчанию выводится только 10 товаров. В документации предлагается для вывода всех товаров код PHP, но он выводит только 10
Много разных советов на просторах интернета, но у меня реально заработал код ниже, спасибо spartanz51. В коде задается массив, в котором указано вывести страницы от 1 до 100, если у вас больше 1000 товаров — увеличивайте ещё.
FAQ: как вывести все товары в определенной категории
WooCommerce вывести все товары принадлежащей категории с id 75.
print_r($wooeto->get('products', array('category' => '75', 'per_page' => '100')));
В этом случае выведется только часть товаров, так как не задан per_page
print_r($wooeto->get('products', array('category' => '75', 'orderby' => 'date')));