Автоматический импорт продуктов в WordPress — частая задача для владельцев интернет-магазинов и сайтов с большим количеством товаров. Особенно актуально это для WooCommerce, когда нужно периодически обновлять каталог из внешних источников: CSV, XML или API. В этой статье разберём, как настроить автоматический импорт продуктов с помощью популярного плагина WP All Import, а также добавим несколько примеров кастомизации через код.
Почему стоит использовать WP All Import для автоматического импорта товаров
WP All Import — мощный и гибкий инструмент для импорта любых данных в WordPress. Его ключевые преимущества:
- Поддержка любых форматов: CSV, XML и даже Excel через конвертацию.
- Возможность импорта любых типов записей, включая кастомные типы постов и WooCommerce продукты.
- Удобный визуальный интерфейс для сопоставления полей источника и полей WordPress.
- Поддержка сложных импортов с вариациями, изображениями, пользовательскими полями и атрибутами.
- Автоматизация через Cron, чтобы импорт запускался по расписанию.
Для WooCommerce есть отдельное расширение WP All Import — WooCommerce Add-On, которое значительно упрощает импорт товаров с вариациями и атрибутами.
Настройка автоматического импорта с расписанием
После настройки базового импорта в WP All Import возникает необходимость запускать импорт автоматически, чтобы не делать это вручную. Это особенно важно для магазинов с частым обновлением ассортимента.
Чтобы включить автоматический запуск, нужно настроить WP-Cron. Для этого:
- Создайте импорт в WP All Import и сохраните его.
- Перейдите в раздел Manage Imports и найдите ID вашего импорта.
- Настройте планировщик задач на сервере (cron job) для вызова скрипта импорта с помощью команды:
wget -q -O - "https://ваш-сайт.ru/wp-cron.php?import_key=ВАШ_УНИКАЛЬНЫЙ_КЛЮЧ&import_id=ID_ИМПОРТА" >/dev/null 2>&1Где ВАШ_УНИКАЛЬНЫЙ_КЛЮЧ и ID_ИМПОРТА можно узнать в настройках импорта WP All Import.
Это позволит запускать импорт по расписанию без вмешательства пользователя.
Кастомизация импорта: добавление пользовательских полей и обработка данных
В ряде случаев нужно не только импортировать стандартные поля, но и добавлять или изменять данные при импорте. WP All Import предоставляет хуки для кастомной обработки.
Рассмотрим пример добавления пользовательского поля _wpgenerate_custom_code с уникальным значением для каждого продукта.
<?php
function wpgenerate_wp_all_import_custom_field($post_id, $data, $import_id) {
// Проверяем, что это нужный импорт
if ($import_id != 12345) return;
// Генерируем уникальный код на основе ID и текущего времени
$custom_code = 'WG-' . $post_id . '-' . time();
// Сохраняем пользовательское поле
update_post_meta($post_id, '_wpgenerate_custom_code', $custom_code);
}
add_action('pmxi_saved_post', 'wpgenerate_wp_all_import_custom_field', 10, 3);
?>Этот код нужно добавить в functions.php вашей темы или в site-specific плагин. Он сработает после каждого импорта, добавляя уникальный код к каждому продукту.
Работа с изображениями при импорте
Импорт изображений — одна из сложных частей автоматизации. WP All Import умеет импортировать изображения по URL, автоматически загружая их в медиабиблиотеку и связывая с продуктом.
Если в источнике несколько изображений, их можно указать через запятую. Для WooCommerce можно импортировать главное изображение и галерею.
Иногда требуется дополнительная обработка изображений — например, добавить водяной знак или изменить размер. Для этого можно использовать хук pmxi_gallery_image:
<?php
function wpgenerate_wp_all_import_process_image($image_url, $attachment_id, $post_id) {
// Здесь можно добавить код для обработки изображения, например, добавить водяной знак
// Для примера просто возвращаем URL без изменений
return $image_url;
}
add_filter('pmxi_gallery_image', 'wpgenerate_wp_all_import_process_image', 10, 3);
?>Пример полной автоматизации импорта продуктов из XML с расписанием
Допустим, у вас есть XML-файл с товарами, который обновляется у поставщика ежедневно. Нужно настроить автоматический импорт:
- Создайте новый импорт в WP All Import, загрузите или укажите URL XML.
- Сопоставьте поля: название, описание, цену, изображения, атрибуты.
- Настройте WooCommerce Add-On для вариаций, если нужно.
- Сохраните импорт и получите ID и ключ.
- Настройте cron на сервере для ежедневного запуска команды с wget или curl.
- Добавьте кастомный код для обработки, если требуется.
Таким образом, вы получите полностью автономный процесс обновления каталога, экономящий время и минимизирующий ошибки.
Альтернативы и дополнения к WP All Import
Если WP All Import по каким-то причинам не подходит, можно рассмотреть:
- WooCommerce CSV Import Suite — официальный плагин для импорта CSV, но менее гибкий.
- Custom scripts с SimpleXML или PHPExcel — для уникальных задач с глубоким контролем.
- Плагины автоматизации типа WP-Cron Manager для управления расписанием.
Но WP All Import остаётся лучшим выбором для большинства задач благодаря простоте и функционалу.