Как создать автоматический импорт продуктов в WordPress из CSV с примерами кода

Автоматизация импорта продуктов в WordPress — актуальная задача для владельцев интернет-магазинов и каталогов. В этой статье мы подробно разберём, как создавать скрипты и использовать плагины для автоматического импорта товаров из CSV файлов, чтобы сэкономить время и избежать ручного ввода данных.

Почему автоматический импорт продуктов важен для WordPress магазинов

При большом ассортименте товаров или частом обновлении каталога ручной ввод данных становится непрактичным. Автоматический импорт позволяет:

  • Обновлять описание, цены и изображения товаров массово.
  • Экономить время на обработку данных.
  • Снижать вероятность ошибок при вводе.

Для WordPress существует множество решений, которые позволяют реализовать импорт из CSV, XML и других форматов. Рассмотрим основные варианты.

Плагины для импорта товаров из CSV в WordPress

WooCommerce CSV Import Suite

Если ваш сайт построен на WooCommerce, этот официальный плагин от Automattic позволяет импортировать и обновлять товары из CSV с поддержкой вариаций, атрибутов и мета-полей.

Преимущества:

  • Поддерживает сложные типы продуктов.
  • Обновление существующих товаров по SKU.
  • Импорт изображений по URL.

Недостаток — плагин платный. Для простых проектов можно использовать бесплатные альтернативы.

WP All Import

Очень гибкий плагин с мощным визуальным редактором для настройки импорта. Поддерживает любые типы записей и сложные структуры данных.

Плюсы:

  • Умеет обрабатывать большие файлы.
  • Интеграция с WooCommerce, ACF и другими расширениями.
  • Поддержка отложенного импорта через WP Cron.

Import any XML or CSV File to WordPress

Бесплатный плагин с базовым функционалом для импорта данных в записи, страницы и кастомные типы записей. Подходит для простых задач.

Практическое создание собственного скрипта импорта CSV с использованием WP Cron

Подготовка CSV файла

Для автоматического импорта важно стандартизировать формат CSV. Например, файл products.csv может содержать такие колонки:

  • sku — уникальный артикул товара
  • title — название продукта
  • description — описание
  • price — цена
  • image_url — ссылка на изображение

Файл должен храниться в доступном для скрипта месте, например в папке wp-content/uploads/import/.

Пример функции для импорта товаров из CSV

Создадим функцию wptour_import_products_from_csv(), которая будет читать CSV, создавать или обновлять записи типа «product».

function wptour_import_products_from_csv() {
  $file = WP_CONTENT_DIR . '/uploads/import/products.csv';
  if (!file_exists($file)) {
    error_log('Файл импорта не найден: ' . $file);
    return;
  }
  $handle = fopen($file, 'r');
  if (!$handle) {
    error_log('Не удалось открыть файл для чтения: ' . $file);
    return;
  }
  $header = fgetcsv($handle, 1000, ',');
  while (($row = fgetcsv($handle, 1000, ',')) !== false) {
    $data = array_combine($header, $row);
    if (empty($data['sku']) || empty($data['title'])) continue;
    // Проверяем существует ли товар с таким SKU
    $existing = new WP_Query(array(
      'post_type' => 'product',
      'meta_key' => 'sku',
      'meta_value' => $data['sku'],
      'posts_per_page' => 1,
      'fields' => 'ids'
    ));
    if ($existing->have_posts()) {
      $product_id = $existing->posts[0];
      // Обновляем товар
      wp_update_post(array(
        'ID' => $product_id,
        'post_title' => $data['title'],
        'post_content' => $data['description']
      ));
    } else {
      // Создаем новый товар
      $product_id = wp_insert_post(array(
        'post_title' => $data['title'],
        'post_content' => $data['description'],
        'post_status' => 'publish',
        'post_type' => 'product'
      ));
      if (!$product_id) continue;
      update_post_meta($product_id, 'sku', $data['sku']);
    }
    // Обновляем цену
    update_post_meta($product_id, 'price', floatval($data['price']));
    // Импортируем изображение
    if (!empty($data['image_url'])) {
      wptour_set_product_image($product_id, $data['image_url']);
    }
  }
  fclose($handle);
}

function wptour_set_product_image($product_id, $image_url) {
  require_once(ABSPATH . 'wp-admin/includes/image.php');
  require_once(ABSPATH . 'wp-admin/includes/file.php');
  require_once(ABSPATH . 'wp-admin/includes/media.php');

  // Проверяем, есть ли уже изображение
  if (has_post_thumbnail($product_id)) return;

  // Скачиваем файл во временную папку
  $tmp = download_url($image_url);
  if (is_wp_error($tmp)) return;

  $file_array = array(
    'name' => basename($image_url),
    'tmp_name' => $tmp
  );

  // Загружаем файл в медиа библиотеку
  $id = media_handle_sideload($file_array, $product_id);
  if (is_wp_error($id)) {
    @unlink($tmp);
    return;
  }

  set_post_thumbnail($product_id, $id);
}

Автоматизация запуска через WP Cron

Для регулярного обновления каталога можно настроить WP Cron. Добавляем событие при активации темы или плагина:

function wptour_activation() {
  if (!wp_next_scheduled('wptour_import_cron')) {
    wp_schedule_event(time(), 'hourly', 'wptour_import_cron');
  }
}
register_activation_hook(__FILE__, 'wptour_activation');

add_action('wptour_import_cron', 'wptour_import_products_from_csv');

Таким образом, скрипт будет запускаться ежечасно и обновлять товары по CSV.

Рекомендации по работе с импортом и безопасностью

Импорт больших файлов может нагружать сервер, поэтому рекомендуем:

  • Разбивать CSV на части и импортировать по частям.
  • Использовать WP CLI для запуска импорта с консоли.
  • Ограничить доступ к папке с файлами импорта через .htaccess.

Также стоит валидировать данные из CSV перед импортом, чтобы избежать ошибок и повреждения базы.

Использование плагина Clearfy Pro для оптимизации импорта и безопасности

Плагин Clearfy Pro поможет оптимизировать работу сайта при больших объемах данных. Он умеет отключать лишние скрипты и функции, что повысит производительность в момент импорта.

Также Clearfy Pro предоставляет расширенные возможности безопасности, что полезно для защиты каталога от несанкционированного доступа.

Заключение

Автоматический импорт продуктов в WordPress — задача, решаемая разными способами: от мощных плагинов до собственных скриптов. Важно адаптировать решение под конкретные потребности и следить за производительностью. Пример с функцией wptour_import_products_from_csv() демонстрирует базовый принцип, который можно расширять и улучшать.

Как создать собственный REST API endpoint в WordPress
15.11.2025
Как создать автоматические редакции постов в WordPress
26.03.2026
Как удалить неиспользуемые таблицы в базе данных WordPress
22.11.2025
Как избежать проблем с отметками продукта в WooCommerce при массовом импорте
28.04.2026
WooCommerce: как правильно отключить AJAX в форме оплаты
30.05.2026

Уроки со скриншотами, подробные руководства