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

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

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

Ручной ввод данных — это долго, неудобно и подвержено ошибкам. Автоматизация позволяет:

  • Экономить время на обновлении каталога.
  • Поддерживать актуальность информации о товарах.
  • Уменьшать риск человеческих ошибок.
  • Обеспечивать интеграцию с внешними системами поставщиков.

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

Обзор плагинов для импорта CSV в WooCommerce

Существует несколько популярных плагинов для импорта товаров из CSV:

  • WP All Import — мощный и гибкий инструмент с поддержкой множества форматов и пользовательских настроек.
  • Product CSV Import Suite — официальный плагин WooCommerce, который хорошо интегрируется с платформой.
  • Really Simple CSV Importer — лёгкий плагин для базового импорта постов и товаров.

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

Пример автоматического импорта CSV с помощью WPOrder_import_csv

Рассмотрим пример создания простой функции для автоматического импорта товаров из CSV с использованием стандартных функций WooCommerce и WordPress.

Примерный алгоритм:

  1. Загрузка CSV файла на сервер (например, через FTP или форму администратора).
  2. Чтение и парсинг CSV.
  3. Создание или обновление товаров в WooCommerce.

Пример кода функции импорта CSV:

function wporder_import_csv_products($csv_file_path) {
    if (!file_exists($csv_file_path)) {
        return new WP_Error('file_not_found', 'CSV файл не найден по указанному пути.');
    }

    $handle = fopen($csv_file_path, 'r');
    if (!$handle) {
        return new WP_Error('file_open_error', 'Не удалось открыть CSV файл.');
    }

    $header = fgetcsv($handle, 1000, ',');
    if (!$header) {
        fclose($handle);
        return new WP_Error('empty_file', 'CSV файл пуст или не содержит заголовков.');
    }

    // Ожидаемые колонки: sku,name,price,description,stock
    while (($row = fgetcsv($handle, 1000, ',')) !== false) {
        $data = array_combine($header, $row);
        if (!$data) {
            continue; // пропускаем некорректные строки
        }

        $product_id = wc_get_product_id_by_sku($data['sku']);

        if ($product_id) {
            $product = wc_get_product($product_id);
        } else {
            $product = new WC_Product_Simple();
        }

        $product->set_sku($data['sku']);
        $product->set_name($data['name']);
        $product->set_price($data['price']);
        $product->set_regular_price($data['price']);
        $product->set_description($data['description']);
        $product->set_stock_quantity(intval($data['stock']));
        $product->set_stock_status($data['stock'] > 0 ? 'instock' : 'outofstock');
        $product->save();
    }

    fclose($handle);
    return true;
}

Эта функция принимает путь к CSV файлу и импортирует товары по SKU. Если товар с таким SKU уже есть, он обновляется, иначе создаётся новый.

Автоматизация импорта через крон задачи WordPress

Чтобы импорт происходил автоматически, настроим крон-задачу, которая будет запускать импорт по расписанию.

Добавим в functions.php или в плагин следующий код:

function wporder_schedule_csv_import() {
    if (!wp_next_scheduled('wporder_daily_csv_import')) {
        wp_schedule_event(time(), 'daily', 'wporder_daily_csv_import');
    }
}
add_action('wp', 'wporder_schedule_csv_import');

function wporder_do_csv_import() {
    $csv_path = WP_CONTENT_DIR . '/uploads/products.csv'; // путь к вашему CSV
    $result = wporder_import_csv_products($csv_path);
    if (is_wp_error($result)) {
        error_log('CSV импорт ошибка: ' . $result->get_error_message());
    }
}
add_action('wporder_daily_csv_import', 'wporder_do_csv_import');

Эта реализация запускает импорт раз в сутки. Вы можете изменить период на 'hourly' или создать собственный интервал.

Дополнительные советы по работе с импортом CSV

Обработка ошибок и логирование

Обязательно добавляйте логирование ошибок при импорте, чтобы отслеживать проблемы с файлами или данными. Можно сохранить логи в отдельный файл или использовать стандартный error_log.

Валидация данных

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

Оптимизация производительности

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

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

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

Заключение

Создание автоматического импорта товаров из CSV — практическое решение для эффективного управления WooCommerce-магазином. Правильно настроенный импорт с обработкой ошибок и автоматическим запуском позволяет поддерживать актуальность каталога без лишних затрат времени.

Автоматизация управления статусами заказов в WordPress
29.12.2025
WooCommerce: установка и настройка дополнительных пользовательских стоимостей в заказах
29.06.2026
Как создать автоматический отчет по аналитике заказов в WordPress
10.01.2026
Как автоматизировать управление строками заказов в WordPress
08.03.2026
Как добавить собственный файл обработки платежей в WooCommerce
17.04.2026