Собираем CSV-файл для импорта custom-постов в товары WooCoommerc’а
Переделываем тут один старый WordPress-сайт в новый Интернет-магазин на WooCommerce. На старом сайте много товаров в виде custom’ных постов с заказом через простую форму Contact Form 7. А надо сделать всё красиво с WooCommerce. Писать граббер прямо с сайта нет желания, импортировать прямо из БД тоже возня лишняя, решили собрать все товары со старого сайта в формате CSV, чтобы потом его загрузить в родной импорт товаров WooCommerce.
-1, 'post_type' => 'tovary', )); if (is_array($_products) and count($_products)) < foreach ($_products as $_product) < $line['ID'] = $_product->ID; $line['Имя'] = $_product->post_title; $line['Изображение'] = get_the_post_thumbnail_url($_product->ID, 'full'); $line['Описание'] = $_product->post_content; $_meta = get_metadata('post', $_product->ID); if (is_array($_meta['mwpf_technical']) and count($_meta['mwpf_technical']) and count($_meta['mwpf_technical'][0])) < //$line['meta'] = var_export( $_meta, true ); // раскоментить если нужно будет посмотреть что там =) $_price = (int) str_replace(' ', '', $_meta['mwpf_action_one'][0]); $line['Базовая цена'] = $_price ? $_price : ''; // чтобы цена не была 0 в WooCommerce для товаров без цены на старом сайте // там мы собираем нужные нам мета-поля ( произвольные поля WordPress для записей ) $line['Мета: mwpf_file'] = $_meta['mwpf_file'][0]; $line['Мета: mwpf_file_name'] = $_meta['mwpf_file_name'][0]; // а так пришлось собирать атрибуты из HTML-таблицы записанной в мета-поле товара preg_match_all('|(.*?) (.*?) |is', $_meta['mwpf_technical'][0], $buff); //$line['dfsd'] = ''. strip_tags(var_export( $buff, true)) . ''; // проверка // этот код вам не понадобится, но вдруг у вас будет похожая ситуация if ( is_array($buff[1]) and count($buff[1]) ) < foreach ($buff[1] as $key =>$_value) < $_name = trim(strip_tags($_value)); if ($_name == '') continue; if (is_numeric($_name)) continue; $__value = trim(strip_tags($buff[2][$key])); if ( $__value == '+') $__value = 'да'; $atts[$line['ID']][$_name] = $__value; $atts_names[$_name] = $_name; >> if ( is_array($atts_names) and count($atts_names) ) < foreach($atts_names as $_name) < if (isset($atts[$line['ID']][$_name])) < $line[$_name] = $atts[$line['ID']][$_name]; >else < $line[$_name] = ''; >> > //$line['Атрибуты'] = var_export($buff, true); // проверка > $headers = array_merge( (array) $headers, array_combine(array_keys($line), array_keys($line)) ); $lines[] = $line; > > if (is_array($lines) and count($lines)) < // собираем таблицу для просмотра на странице, чтобы понимать правильно ли мы всё сделали: echo '
'; echo '
'; foreach ( $headers as $_name ) < echo ' ' . $_name . ' '; > echo '
'; foreach ($lines as $_line) < echo '
'; foreach ($headers as $_name) < echo ' ' . $_line[$_name] . ' '; > echo '
'; > echo '
'; // а теперь начинаем собирать данные для CSV-файла: $line = array(); foreach ( $headers as $_name ) < if (isset($atts_names[$_name])) < $i++; $line[] = "Имя атрибута $i"; $line[] = "Значение(-я) аттрибута(-ов) $i"; $line[] = "Видимость атрибута $i"; $line[] = "Глобальный атрибут $i"; >else < $line[] = $_name; >> $data[] = $line; foreach ($lines as $_line) < $line = array(); foreach ($headers as $_name) < if (isset($atts_names[$_name])) < $line[] = $_name; $line[] = $_line[$_name]; $line[] = 1; $line[] = 1; >else < $line[] = $_line[$_name]; >> $data[] = $line; > // записываем все наши данные в CSV-файл @unlink(__DIR__.'/export.csv'); $fp = fopen(__DIR__.'/export.csv', 'w'); foreach ($data as $_fields) < fputcsv($fp, $_fields); >fclose($fp); // выводим ссылку на CSV-файл echo '
Скачать CSV'; > exit(); >); >
Не торопитесь охать и ахать от безумного кода. Задача была быстро и просто перенести товары со старого сайт на новый в WooCommerce.
Там много лишнего кода, который может вам не пригодится. С другой стороны возможно у вас такая ситуация и Вам нужно быстрое решение.
Код был написан прямо в functions.php активной темы и вызван через ваш_сайт/product_export?=1. В итоге перед вами будет таблица данных и ссылка на корректный CSV-файл, готовый для импорта в WooCommerce.
Кстати WooCommerce фотографии прямо грузит по ссылкам со старого сайта, что удобно, а если здесь:
$line['Изображение'] = get_the_post_thumbnail_url($_product->ID, 'full');можно указать несколько ссылок ко всем изображениям товара, тогда WooCommerce в процессе импорта загрузит их все: по первой ссылке будет главное фото товара, остальные пойдут в галерею.
К примеру если вы собрали URL-адреса к изображениям товара в массив $images
if (is_array($images) and count($images))Импорт товаров в 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 файла
Выполните импорт файла в панели администратора:

-
Выберите CSV файл:


Импорт успешно завершен:
Проверка результатов импорта
После выполнения импорта простых товаров в интернет-магазине будет опубликовано три футболки различающихся по размеру и цвету:

После выполнения импорта вариативных товаров будет опубликована одна футболка с тремя вариациями:
Импорт товаров в WooCommerce: пошаговая инструкция
В WooCommerce импорт товаров делается при помощи встроенного инструмента в разделе «Товары», дополнительно можно ничего не устанавливать. Рассказываем, как правильно пользоваться этим инструментом.
Подготовка файла с товарами к импорту в WooCommerce
Чтобы импорт прошёл успешно и его не пришлось делать повторно, стоит заранее позаботиться о двух нюансах: правильном оформлении таблицы с товарами и её формате.
Оформление таблицы. Каждая колонка в вашем прайс-листе будет соответствовать какому-то полю в карточке товара на сайте. В процессе импорта вы сможете вручную выбрать, к какому полю должна относиться любая из колонок, поэтому называться они могут как угодно.
Более прагматичным подходом будет заранее назвать колонки как надо. Для этого создайте один или несколько товаров вручную и экспортируйте их — так вы получите пример CSV файла для WooCommerce, который сможете сравнить со своим прайс-листом. Заодно проверите, все ли колонки есть в исходном файле с товарами.
Если вы работаете с WooCommerce впервые и не знаете, как в нём создаются товары, вот инструкция, которая поможет с этим разобраться:
Отдельный момент — изображения товаров. В файле на них нужно указывать ссылки. Для этого загрузите изображения заранее в разделе «Медиафайлы» и каждому из них WordPress присвоит ссылку.
Формат файла. Встроенный инструмент импорта WooCommerce поддерживает только один формат — CSV. Если у вашего интернет-магазина прайc-лист в другом формате, пересохраните его в CSV. Такой функционал есть во всех популярных программах по работе с таблицами: Excel, Google Таблицах и Numbers.
Ищите опцию по сохранению таблицы с товарами в формате CSV в меню «Файл». Как правило она называется «Скачать», «Сохранить как» или «Экспортировать».

Другой вариант — использовать онлайн-конвертер из XLS в CSV. С его помощью кстати можно также конвертировать файлы и в обратном направлении. Это может пригодиться, например, после экспорта.
В крайнем случае попробуйте найти в библиотеке WordPress плагин для импорта товаров в WooCommerce из XML или Excel, но по опыту большинство из них платные.
Загрузка файла для импорта товаров в WooCommerce
Перейдите в консоли WordPress в раздел «Товары» и нажмите кнопку «Импорт» вверху раздела возле заголовка.

Откроется мастер по импорту товаров в WooCommerce. В нём сначала нажмите «Обзор», чтобы выбрать CSV-файл с товарами у себя компьютере, затем нажмите «Продолжить».
На следующем этапе слева будет название колонки в вашей таблице, а справа — поле в карточке товара, которому WooCommerce собирается присвоить значения из этой колонки.

Если справа стоит значение «Не импортировать», значит WooCommerce не понимает, какому полю соответствует колонка. Всё, что вам нужно сделать — вручную выбрать поле. Чтобы вам было проще понять, какое поле выбирать, под названием колонки слева будет пример данных из её первой строки.
Если вы видите ситуацию, как на скриншоте ниже, значит WooCommerce не смог распознать колонки. По умолчанию инструмент импорта ориентируется на то, что в качестве разделителя колонок выступает запятая. В нашем примере разделителем выступает точка с запятой.

Решение — указать в дополнительных параметрах импорта этот разделитель. Для этого вернитесь на шаг назад и нажмите «Показать расширенные настройки» слева от кнопки «Продолжить».
В открывшихся параметрах найдите опцию «Разделитель CSV», укажите там точку с запятой и нажмите «Продолжить». После этого WooCommerce должен корректно распознать колонки.
Внимательно просмотрите каждую строку и убедитесь, что WooCommerce корректно присвоил поле каждой строке. Когда всё проверите, нажмите внизу кнопку «Запустить инструмент импорта».
Импорт товаров запустится в автоматическом режиме. В зависимости от количества товаров может понадобиться немного подождать. В конце вы увидите уведомление о том, сколько товаров импортировалось и были ли ошибки.
В дальнейшем, если понадобится добавить поле ко всем товарам или изменить что-то в карточке одного-двух товаров, повторите процесс с тем же прайсом, но поставьте на первом экране галочку в пункте «Обновить существующие товары», перед тем как нажать кнопку «Продолжить».
В результате WooCommerce определит, что эти товары у вас уже есть и обновит только те поля, содержимое которых отличается от текущей версии.
На этом всё. Надеемся, статья помогла вам разобраться, как импортировать товары в WooCommerce. Если что-то непонятно или у вас выскакивает ошибка, опишите ситуацию в комментариях, попробуем разобраться вместе.
Загрузка(импорт) товаров в WooCommerce

Прежде чем начинать импорт, необходимо установить плагин для импорта csv “Woocommerce CSV Importer”.
После установки плагина необходимо его активировать и перейти к настройкам.
Настройка модуля Woocommerce CSV Importer
Переходим Plugins → Settings:

В открывшемся окне настраиваем:
- Field separator — устанавливаем разделить csv в строке
- Skip the first row — устанавливаем yes, если нужно пропустить первую строку с заголовками во время импорта
- При загрузке файла на русском языке, кодировка файла должна быть — utf-8, а в настройках плагина — не кодировать.

Остальные поля можно оставить по умолчанию.
Импорт csv в WooCommerce
Прежде чем начинать импорт, необходимо создать Хедеры.
Создание Хедеров
Переходим в меню плагина CSV Import во вкладку CSV Import(1) → Headers(2). Выбираем импортируемый файл(3) и нажимаем Load(4):

Для каждого столбца нужно выставить названия столбцов:

После настроек сохраняем Хедер:

Импорт файла
Переходим в меню плагина CSV Import во вкладку CSV Import(1) → Import(2). Select a file(3) — выбираем csv файл. Select a header(4) — выбираем файл с Хедерами и нажимаем Load(5).

Открывается превью импорта, где нужно нажать Start и начнется импорт товаров в WooCommerce:

По окончании импорта, появится соответствующее сообщение:

Результаты импорта

Переходим во вкладку Products:
На странице просмотра товара можно увидеть, что загружены название товара(1), цена(2), характеристики(3), количество(4), артикул(5), категория(6), все изображения(7).

Пример CSV файла для импорта в WooCommerce
Скачать пример csv файла можно здесь.
Импорт в WooCommerce товаров с вариантами
Описание примера csv файла товаров с вариантами
На официальном сайте плагина “Woocommerce CSV Importer” есть пример csv файла товаров с вариантами:
В файле можно посмотреть как правильно оформлять товары с вариантами, если у товара, к примеру, разные размеры или цвет.
Настройка и импорт товаров с вариантами
Перед импортом товаров с вариантами должны быть созданы или загружены все атрибуты товара, к примеру — цвет, размер. Атрибуты можно создать вручную или загрузить csv файл через модуль “Woocommerce CSV Importer”.
Переходим Products → Attributes. В столбце variations указываем ярлык (slug) атрибута, который задается здесь:

Значения атрибутов также создаются заранее.
После подготовки файла, аналогично, как и с товарами без вариантов, создаем хедеры и загружаем файл.
Результат загрузки товаров с вариантами
После загрузки товара с вариантами на сайте можно увидеть загруженные атрибуты товара и значения атрибута:
Пример csv файла для импорта товаров с вариантами
Обычно при импорте товаров с вариантами в Woocommerce сначала грузятся простые товары(без вариантов), а потом их варианты. Прайсматрикс подготовил пример файла, в котором можно загрузить товары с вариантами за один раз. Скачать пример csv файла для импорта товаров с вариантами можно по ссылке.
Описание основных полей, которые касаются контента карточки товара:
- sku — артикул товара или его варианта;
- post_parent — артикул родительского продукта, указывается только для вариантов;
- product_type — признак, указывающий продукт или его вариант описан в данной строке;
- variations — какие атрибуты будут вариантами;
- pa_color — значения атрибута color;
- pa_size — значения атрибута size;
- regular_price — цена;
- sale_price — цена со скидкой, если есть;
- post_title — название;
- post_content — полное описание;
- post_excerpt — краткое описание;
- category — категория;
- featured_image — главное фото;
- product_gallery — дополнительные фото.
Попробуйте Прайсматрикс прямо сейчас! Полноценное тестирование 14 дней бесплатно
Есть вопросы или нужна консультация? — наша поддержка всегда готова помочь в телеграме или личном кабинете.
Рубрики
Все инструкции
Инструкции по пользованию сервисом, инструкции по установке на разных CMS (интеграции) и другие руководства

