Автоматизация импорта товаров в WooCommerce — задача, с которой часто сталкиваются владельцы интернет-магазинов на WordPress. Особенно актуальна она, если ассортимент нужно регулярно обновлять из внешних источников, например, прайс-листов поставщиков или других систем учета. В этой статье подробно разберем, как создать автоматический импорт продуктов в WooCommerce с использованием REST API, приведем примеры кода и расскажем о полезных плагинах.
Почему REST API — оптимальный выбор для импорта товаров в WooCommerce
WooCommerce имеет встроенный REST API, который позволяет создавать, обновлять и удалять товары программно. Использование REST API дает следующие преимущества:
- Гибкость — можно интегрироваться с любыми внешними системами, которые умеют работать с HTTP-запросами.
- Безопасность — работа идет через авторизованные запросы, что снижает риски несанкционированного доступа.
- Масштабируемость — можно автоматизировать загрузку большого количества товаров, настроить периодические обновления.
Кроме того, REST API хорошо документирован и поддерживается WooCommerce, что облегчает разработку.
Настройка доступа к WooCommerce REST API
Для работы с REST API нужно создать ключи доступа:
- В админке WordPress перейдите в WooCommerce → Настройки → Продвинутые → REST API.
- Нажмите кнопку «Добавить ключ».
- Выберите пользователя, права (обычно «Чтение/запись») и добавьте описание.
- Сохраните, после чего получите Consumer Key и Consumer Secret — эти данные нужны для аутентификации.
Для выполнения запросов с PHP удобно использовать библиотеку woocommerce/wc-api-php или делать запросы через cURL.
Пример простого запроса для создания продукта
Ниже пример функции wpdigest_create_product_via_api(), которая создает простой товар через REST API WooCommerce на PHP:
function wpdigest_create_product_via_api($product_data) {
$url = 'https://example.com/wp-json/wc/v3/products';
$consumer_key = 'ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
$consumer_secret = 'cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
$data_string = json_encode($product_data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, $consumer_key . ':' . $consumer_secret);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string)
));
$result = curl_exec($ch);
curl_close($ch);
return json_decode($result, true);
}Пример данных для создания продукта:
$product_data = [
'name' => 'Тестовый продукт',
'type' => 'simple',
'regular_price' => '199.99',
'description' => 'Описание тестового продукта',
'categories' => [
[ 'id' => 15 ]
],
'images' => [
[ 'src' => 'https://example.com/wp-content/uploads/product-image.jpg' ]
]
];Автоматизация импорта из файла CSV или внешнего API
Часто данные для импорта приходят в формате CSV или из внешнего API поставщика. Чтобы автоматизировать импорт:
- Напишите скрипт, который парсит CSV или делает запрос к API и преобразует данные в формат, подходящий для WooCommerce REST API.
- Для импорта большого количества товаров используйте пакетную загрузку — создавайте товары частями.
- Настройте cron-задачу на сервере для регулярного запуска скрипта (например, раз в сутки).
Пример парсинга CSV и отправки через REST API частями:
function wpdigest_import_products_from_csv($csv_file_path) {
if (!file_exists($csv_file_path)) return;
$handle = fopen($csv_file_path, 'r');
if (!$handle) return;
$header = fgetcsv($handle);
$batch = [];
$batch_size = 10;
while (($row = fgetcsv($handle)) !== false) {
$item = array_combine($header, $row);
$product_data = [
'name' => $item['name'],
'type' => 'simple',
'regular_price' => $item['price'],
'description' => $item['description'],
// Добавьте остальные поля
];
$batch[] = $product_data;
if (count($batch) >= $batch_size) {
foreach ($batch as $product) {
wpdigest_create_product_via_api($product);
}
$batch = [];
}
}
// Остаток
foreach ($batch as $product) {
wpdigest_create_product_via_api($product);
}
fclose($handle);
}Полезные плагины для упрощения импорта и интеграции
Если не хочется писать весь код самостоятельно, можно использовать плагины, которые облегчают автоматизацию импорта:
- WPRemark — плагин для расширенного управления товарами и их импортом.
- OmniVideo — если нужно автоматом добавлять видеообзоры к товарам.
- Плагины для импорта CSV, например WP All Import, с поддержкой WooCommerce.
При использовании готовых решений можно комбинировать автоматические загрузки из CSV или API с возможностями расширенного управления товарами.
Обработка ошибок и логирование при импорте продуктов
При автоматическом импорте важно отслеживать ошибки и фиксировать их для последующего анализа. Рекомендуется:
- Логировать ответы API — успешные и ошибочные.
- Реализовать повторную попытку для временных сбоев.
- Отправлять уведомления администраторам при критических ошибках.
Пример логирования ответа API:
function wpdigest_log_api_response($response) {
$log_file = __DIR__ . '/import_log.txt';
$date = date('Y-m-d H:i:s');
file_put_contents($log_file, "[$date] " . print_r($response, true) . "\n", FILE_APPEND);
}Вызовите эту функцию после каждого запроса в wpdigest_create_product_via_api() для записи результата.
Итоги и рекомендации
Автоматический импорт товаров в WooCommerce через REST API — мощный способ держать магазин актуальным без лишних затрат времени. Используйте встроенный API, комбинируйте его с парсингом CSV или внешних API, и не забывайте про обработку ошибок и логирование. Для упрощения задачи рассмотрите использование проверенных плагинов, например, WPRemark.