Автоматический импорт продуктов в WordPress — частая задача для владельцев интернет-магазинов и сайтов с каталогами. Обычно это нужно для регулярного обновления ассортимента из внешних систем, например, ERP, CRM или поставщиков. В этой статье мы подробно разберём, как настроить импорт продуктов через REST API с помощью собственного кода и популярных плагинов.
Почему автоматический импорт продуктов важен для WordPress
Вручную добавлять и обновлять товары — долго и подвержено ошибкам. Автоматизация позволяет:
- Сэкономить время на рутинных операциях.
- Обеспечить актуальность данных на сайте.
- Уменьшить количество ошибок при вводе информации.
- Обеспечить синхронизацию с другими системами.
С помощью REST API можно организовать двусторонний обмен данными между WordPress и другими сервисами, что даёт гибкость и масштабируемость.
Настройка REST API для импорта продуктов
WordPress из коробки поддерживает REST API, а WooCommerce расширяет его для работы с товарами. Для начала убедимся, что REST API и WooCommerce включены и настроены.
Для доступа к REST API WooCommerce нужны ключи API с правами на чтение/запись. Их можно создать в админке WooCommerce:
- Перейдите в WooCommerce > Настройки > Продвинутые > REST API.
- Добавьте новый ключ с необходимыми правами.
После этого можно обращаться к API по адресу https://your-site.com/wp-json/wc/v3/products с авторизацией по OAuth или Basic Auth.
Пример запроса для получения продуктов
curl https://your-site.com/wp-json/wc/v3/products \
-u consumer_key:consumer_secret
Создание скрипта для автоматического импорта
Рассмотрим пример функции, которая импортирует данные о продуктах из внешнего JSON и создаёт или обновляет товары в WooCommerce.
function wptask_import_products_from_json($json_url) {
$response = wp_remote_get($json_url);
if (is_wp_error($response)) {
return 'Ошибка получения данных';
}
$products = json_decode(wp_remote_retrieve_body($response), true);
if (!is_array($products)) {
return 'Неверный формат данных';
}
foreach ($products as $item) {
$existing = wc_get_product_id_by_sku($item['sku']);
if ($existing) {
$product = wc_get_product($existing);
} else {
$product = new WC_Product_Simple();
}
$product->set_name($item['name']);
$product->set_sku($item['sku']);
$product->set_regular_price($item['price']);
$product->set_description($item['description']);
$product->save();
}
return 'Импорт завершён';
}
В этом коде мы получаем JSON с товарами, ищем товар по SKU и создаём или обновляем его, используя стандартные методы WooCommerce.
Автоматизация с помощью WP-Cron
Чтобы импорт запускался автоматически, можно добавить задачу в WP-Cron:
function wptask_schedule_product_import() {
if (!wp_next_scheduled('wptask_product_import_event')) {
wp_schedule_event(time(), 'hourly', 'wptask_product_import_event');
}
}
add_action('wp', 'wptask_schedule_product_import');
add_action('wptask_product_import_event', function() {
wptask_import_products_from_json('https://example.com/products.json');
});
Этот код запускает импорт каждый час. Вы можете менять период запуска, например, на 'twicedaily' или 'daily'.
Плагины для импорта продуктов через REST API
Если не хотите писать код, рассмотрите плагины, которые упрощают импорт:
- WP All Import — мощный инструмент с поддержкой REST API и WooCommerce.
- WooCommerce Product Importer — специализированный плагин для импорта товаров.
Эти плагины позволяют настраивать расписание, сопоставлять поля и обрабатывать сложные структуры данных без программирования.
Обработка ошибок и логирование при импорте
При автоматическом импорте важно отслеживать ошибки. В коде можно добавить логирование:
function wptask_log_import($message) {
if (defined('WP_DEBUG') && WP_DEBUG) {
error_log('[WPTask Import] ' . $message);
}
}
// В функции импорта вызывайте wptask_log_import при ошибках
Также полезно отправлять уведомления администраторам, если что-то пошло не так.
Советы по безопасности при работе с REST API
При импорте через API важно:
- Использовать HTTPS для шифрования данных.
- Настроить права доступа API-ключей строго по минимуму.
- Проверять и фильтровать входящие данные перед сохранением.
- Ограничивать IP-адреса, с которых разрешён доступ, если возможно.
Это поможет защитить сайт от несанкционированного доступа и ошибок.
Заключение
Автоматический импорт продуктов через REST API — мощный способ поддерживать актуальность каталога с минимальными затратами времени. Комбинация собственного кода и проверенных плагинов позволит настроить гибкое и надежное решение под любые задачи.
Если хотите попробовать готовые инструменты с поддержкой импорта, рекомендуем ознакомиться с плагинами и темами WPSHOP, которые помогут ускорить разработку и повысить качество сайта.