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

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

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

Импорт CSV позволяет быстро обновлять каталог товаров, добавлять новые позиции, корректировать цены и описания. Ручной ввод при большом ассортименте не практичен и приводит к ошибкам. Автоматизация с помощью кода или специальных плагинов обеспечивает:

  • Экономию времени при обновлении каталога.
  • Минимизацию ошибок ввода данных.
  • Возможность регулярного обновления через CRON.

Далее рассмотрим, как реализовать подобный функционал.

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

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

  • WP All Import — мощный и гибкий, поддерживает автоматический импорт по расписанию и работу со сложными структурами данных. Имеет удобный визуальный интерфейс.
  • Product Import Export for WooCommerce — бесплатный плагин с базовым функционалом импорта и экспорта товаров.
  • WooCommerce CSV Importer — плагин от WooCommerce с базовыми возможностями импорта.

Для автоматизации с помощью кода можно использовать WP All Import Pro с дополнением для программного запуска или написать собственный скрипт.

Создание собственного автоматического импорта CSV через код в WordPress

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

1. Чтение CSV файла

Для начала нам нужно считать CSV файл. Для надежности используем встроенную функцию PHP fgetcsv(). Предположим, файл хранится в wp-content/uploads/import/products.csv.

function wpmanual_read_csv($filepath) {
    $rows = [];
    if (!file_exists($filepath)) {
        return $rows;
    }
    if (($handle = fopen($filepath, 'r')) !== false) {
        $header = fgetcsv($handle, 1000, ',');
        while (($data = fgetcsv($handle, 1000, ',')) !== false) {
            $rows[] = array_combine($header, $data);
        }
        fclose($handle);
    }
    return $rows;
}

Эта функция возвращает массив ассоциативных массивов с данными из CSV.

2. Создание продукта WooCommerce программно

Далее создадим функцию, которая принимает данные продукта и создает/обновляет товар.

function wpmanual_create_or_update_product($product_data) {
    if (empty($product_data['sku'])) {
        return;
    }
    $product_id = wc_get_product_id_by_sku($product_data['sku']);

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

    $product->set_name($product_data['name']);
    $product->set_sku($product_data['sku']);
    $product->set_regular_price($product_data['price']);
    $product->set_description($product_data['description']);
    $product->set_stock_quantity((int)$product_data['stock']);
    $product->set_manage_stock(true);
    $product->save();
}

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

3. Основной импорт с обработкой всех продуктов

Теперь объединим чтение CSV и создание продуктов в одну функцию:

function wpmanual_import_products_from_csv() {
    $filepath = WP_CONTENT_DIR . '/uploads/import/products.csv';
    $products = wpmanual_read_csv($filepath);

    foreach ($products as $product_data) {
        wpmanual_create_or_update_product($product_data);
    }
}

Эту функцию можно запускать вручную или добавить в CRON-задачу для автоматического обновления.

Как запускать импорт по расписанию с помощью WP-Cron

Чтобы импорт запускался автоматически, настроим WP-Cron. Например, создадим событие, которое будет запускать импорт каждый день.

add_action('wpmanual_daily_import_event', 'wpmanual_import_products_from_csv');

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

Это создаст ежедневное задание для импорта продуктов из CSV.

Обработка изображений и дополнительных полей

Если в вашем CSV есть URL изображений, то можно дополнительно загружать и прикреплять их к товарам.

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

    $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($file_array['tmp_name']);
        return;
    }

    set_post_thumbnail($product_id, $id);
}

Далее вызывайте эту функцию из wpmanual_create_or_update_product, передавая URL изображения из CSV.

Заключение

Автоматический импорт продуктов из CSV в WordPress с WooCommerce позволяет значительно упростить управление каталогом, особенно при большом количестве товаров. Вы можете использовать готовые решения, такие как WP All Import, или написать собственный скрипт с учетом ваших бизнес-процессов.

Если хотите расширенный функционал импорта и автоматизации, обратите внимание на плагин WP All Import с их официального магазина.

Как создать автоматический импорт продуктов из CSV в WordPress
28.02.2026
Как настроить автоматическое удаление спама в комментариях WordPress
01.01.2026
Как создать динамический список постов с фильтром в WordPress
27.12.2025
Как удалить кеш Redis в WordPress: практическое руководство
01.02.2026
Как изменить robots.txt в WordPress без плагинов
08.03.2026