wpbackup.ru wordpress WPBackup.ru

Автоматизация экспорта товаров WooCommerce через WP-CLI

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

При большом ассортименте товаров в WooCommerce регулярный экспорт данных необходим для синхронизации с другими системами, аналитики или резервного копирования. Ручное скачивание CSV или XML-файлов через админку становится неэффективным и подвержено ошибкам. Решение — автоматизировать процесс через WP-CLI, что позволяет запускать экспорт из командной строки, планировать по расписанию через cron и интегрировать в CI/CD.

Диагностика: как понять, что экспорт товаров нужно автоматизировать

  • Экспорт занимает много времени и требует регулярного повторения;
  • Ручной экспорт ведёт к ошибкам с кодировкой или неполному набору данных;
  • Необходима интеграция с внешними системами, где нужен автоматический обмен файлами;
  • Отсутствует прозрачность и контроль над процессом экспорта.

Пошаговое решение: создание и запуск экспорта через WP-CLI

1. Установка WP-CLI и подготовка среды

Убедитесь, что на сервере установлен WP-CLI. Проверить это можно командой:

wp --info

Если WP-CLI не установлен, следуйте официальной инструкции https://wp-cli.org/#installing.

2. Использование встроенной команды WooCommerce для экспорта

WooCommerce из коробки не предоставляет WP-CLI команду для экспорта товаров, но можно использовать плагины или написать собственный скрипт. Рассмотрим пример создания кастомной WP-CLI команды для экспорта товаров в CSV.

3. Пример кода для кастомной WP-CLI команды экспорта товаров

if (defined('WP_CLI') && WP_CLI) {
    class WC_Export_Products_Command {
        public function export($args, $assoc_args) {
            $filename = isset($assoc_args['file']) ? $assoc_args['file'] : 'woocommerce-products-export.csv';
            $products = wc_get_products(array('limit' => -1));
            $csv_output = fopen('php://output', 'w');
            if (!$csv_output) {
                WP_CLI::error('Не удалось открыть поток для записи');
            }
            // Заголовки CSV
            $headers = array('ID', 'Название', 'SKU', 'Цена', 'Статус');
            $rows = [];
            foreach ($products as $product) {
                $rows[] = [
                    $product->get_id(),
                    $product->get_name(),
                    $product->get_sku(),
                    $product->get_price(),
                    $product->get_status(),
                ];
            }

            // Запись в файл
            $file_path = ABSPATH . $filename;
            $file = fopen($file_path, 'w');
            fputcsv($file, $headers);
            foreach ($rows as $row) {
                fputcsv($file, $row);
            }
            fclose($file);

            WP_CLI::success("Экспорт товаров завершён. Файл сохранён: $file_path");
        }
    }
    WP_CLI::add_command('wc-export-products', 'WC_Export_Products_Command');
}

Сохраните этот код в файле wp-content/mu-plugins/wc-export-products-cli.php (создайте папку mu-plugins если её нет). Теперь доступна команда:

wp wc-export-products export --file=products.csv

4. Настройка cron для автоматического экспорта

Добавьте в crontab пользователя, под которым работает сервер, запись:

0 2 * * * /usr/bin/wp wc-export-products export --file=products-$(date +\%Y\%m\%d).csv --path=/var/www/html/wordpress > /dev/null 2>&1

Это выполнит экспорт каждый день в 2:00 и сохранит файл с датой.

Проверка результата после внедрения

  • Команда wp wc-export-products export успешно выполняется без ошибок;
  • Файл CSV с товарами появляется в корне сайта или указанной директории;
  • В Cron логе нет ошибок, файл создаётся по расписанию;
  • Открытие CSV в Excel или любом текстовом редакторе показывает корректные данные.

Частые ошибки и их исправление

  • Ошибка открытия файла для записи: Проверьте права на директорию, где сохраняется CSV. PHP-процесс должен иметь право записи.
  • Пустой файл или нет товаров: Убедитесь, что в WooCommerce есть опубликованные товары и вызов wc_get_products(['limit'=>-1]) возвращает результаты.
  • Ошибка «wp: command not found» в cron: Используйте полный путь к wp-cli (узнать с помощью which wp), либо в cron-скрипте задайте PATH.
  • Некорректная кодировка CSV: По умолчанию используется UTF-8. Для Excel в Windows можно добавить BOM, например, fwrite($file, "\xEF\xBB\xBF"); после открытия файла.

Практические советы по безопасности и производительности

  • Не сохраняйте экспортируемые файлы в директории, доступные по URL, без защиты — используйте .htaccess или переместите файлы вне публичной части.
  • Ограничьте доступ к WP-CLI и cron только доверенным пользователям.
  • При большом количестве товаров разбивайте экспорт на части, чтобы не превышать лимиты памяти и времени выполнения.
  • Для интеграции с внешними системами используйте защищённые SFTP или API для передачи файлов, а не прямое открытие файлов в интернете.

Сравнение способов экспорта товаров WooCommerce

СпособПлюсыМинусы
Экспорт через админку WooCommerceПростота, не требует навыковРучной процесс, нет автоматизации, риск ошибок
Плагины экспорта (например, Product CSV Import Suite)Больше опций, удобный интерфейсПлатные, нагрузка на сайт
WP-CLI с кастомной командойАвтоматизация, гибкость, легко интегрировать с cronТребует навыков командной строки, настройка
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее