wphow.ru wordpress WPHow

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

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

Почему стоит автоматизировать импорт товаров из CSV в WooCommerce

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

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

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

1. WP All Import — мощный плагин с визуальным конструктором импорта, поддерживает сложные структуры и кастомные поля. Есть бесплатная и платная версия.

2. Product CSV Import Suite — официальный плагин WooCommerce, который расширяет стандартный импорт товаров, поддерживает вариации, атрибуты и мета-поля.

3. Really Simple CSV Importer — легковесное решение для базового импорта, подойдет для простых каталогов.

Для автоматизации с помощью кода можно использовать хуки WooCommerce и WP Cron для регулярного запуска импорта.

Создаем автоматический импорт из CSV через код: пошаговое руководство

Рассмотрим пример функции wphow_import_woocommerce_products_from_csv(), которая загружает CSV, разбирает строки и создает или обновляет товары.

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

  • CSV должен содержать основные поля: SKU, название, описание, цена, категория, изображение.
  • Поля должны быть разделены запятыми или точкой с запятой.
  • Пример заголовков: sku, name, description, price, category, image_url

Пример кода для импорта

function wphow_import_woocommerce_products_from_csv($file_path) {
    if (!file_exists($file_path)) {
        error_log('CSV файл не найден: ' . $file_path);
        return;
    }

    $handle = fopen($file_path, 'r');
    if (!$handle) return;

    $header = fgetcsv($handle);
    while (($row = fgetcsv($handle)) !== false) {
        $data = array_combine($header, $row);

        $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_description($data['description']);
        $product->set_regular_price($data['price']);

        // Категория
        if (!empty($data['category'])) {
            $term = term_exists($data['category'], 'product_cat');
            if (!$term) {
                $term = wp_insert_term($data['category'], 'product_cat');
            }
            if (!is_wp_error($term)) {
                $product->set_category_ids(array($term['term_id'] ?? $term['term_id']));
            }
        }

        $product->save();

        // Добавление изображения
        if (!empty($data['image_url'])) {
            wphow_set_product_image($product->get_id(), $data['image_url']);
        }
    }
    fclose($handle);
}

function wphow_set_product_image($product_id, $image_url) {
    $upload_dir = wp_upload_dir();
    $image_data = file_get_contents($image_url);
    $filename = basename($image_url);

    if (wp_mkdir_p($upload_dir['path'])) {
        $file = $upload_dir['path'] . '/' . $filename;
    } else {
        $file = $upload_dir['basedir'] . '/' . $filename;
    }

    file_put_contents($file, $image_data);

    $wp_filetype = wp_check_filetype($filename, null);
    $attachment = array(
        'post_mime_type' => $wp_filetype['type'],
        'post_title' => sanitize_file_name($filename),
        'post_content' => '',
        'post_status' => 'inherit'
    );

    $attach_id = wp_insert_attachment($attachment, $file, $product_id);
    require_once(ABSPATH . 'wp-admin/includes/image.php');
    $attach_data = wp_generate_attachment_metadata($attach_id, $file);
    wp_update_attachment_metadata($attach_id, $attach_data);
    set_post_thumbnail($product_id, $attach_id);
}

Этот код обрабатывает CSV, создает или обновляет продукты, назначает категории и устанавливает изображение. Для запуска импорта можно добавить вызов этой функции в cron-задачу или вручную из админки.

Автоматизация запуска импорта с помощью WP Cron

Чтобы импорт происходил регулярно, например, раз в сутки, добавим WP Cron событие:

add_action('wphow_daily_import', 'wphow_run_import');
function wphow_run_import() {
    $file = WP_CONTENT_DIR . '/uploads/products.csv';
    wphow_import_woocommerce_products_from_csv($file);
}

if (!wp_next_scheduled('wphow_daily_import')) {
    wp_schedule_event(time(), 'daily', 'wphow_daily_import');
}

Не забудьте разместить CSV файл по указанному пути или изменить путь в коде.

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

  • Валидация данных: Перед импортом проверяйте корректность CSV, чтобы избежать ошибок.
  • Логирование: Добавьте логирование успешных и неудачных импортов для отладки.
  • Безопасность: Ограничьте доступ к файлу CSV и ручному запуску импорта.
  • Использование плагинов: Если код кажется сложным, используйте WP All Import с настройками для автоматизации.

Использование плагина WP All Import с автоматическим обновлением

Плагин WP All Import позволяет настроить импорт из CSV и даже запускать его по расписанию. Для этого нужно связать плагин с WP Cron и настроить URL обновления файла CSV с внешнего сервера.

Такой подход особенно удобен, если товары поставляются из 1С или другой ERP-системы, где CSV обновляется автоматически.

Заключение по теме

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

×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙