WooCommerce: как создать кастомный экспорт товаров в CSV без плагинов

Диагностика задачи: зачем нужен кастомный экспорт товаров из WooCommerce

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

Анализ стандартных возможностей WooCommerce и их ограничения

WooCommerce предлагает базовый экспорт через Инструменты > Экспорт, который выводит только стандартные поля и не позволяет гибко настраивать формат. Плагины расширяют функционал, но часто перегружают сайт и создают зависимости. Кастомный код позволяет:

  • Выбрать конкретные поля товара и метаданные;
  • Настроить структуру CSV по требованиям интеграции;
  • Добавить фильтры (например, по категориям, статусу, дате);
  • Минимизировать нагрузку и избежать конфликтов с плагинами.

Пошаговое решение: создание кастомного экспорта товаров в CSV

1. Создаем страницу экспорта в админке

Добавим пункт меню для запуска экспорта:

add_action('admin_menu', function() {
    add_submenu_page('woocommerce', 'Экспорт товаров CSV', 'Экспорт CSV', 'manage_woocommerce', 'custom-woocommerce-export', 'custom_woocommerce_export_page');
});

function custom_woocommerce_export_page() {
    if (!current_user_can('manage_woocommerce')) {
        wp_die('Доступ запрещен');
    }

    if (isset($_POST['export_csv'])) {
        custom_woocommerce_export_process();
    }

    echo '<h1>Экспорт товаров WooCommerce в CSV</h1>';
    echo '<form method="post">';
    echo '<p><button type="submit" name="export_csv" class="button button-primary">Скачать CSV</button></p>';
    echo '</form>';
}

2. Реализуем функцию экспорта товаров

Собираем данные о товарах из базы и формируем CSV:

function custom_woocommerce_export_process() {
    header('Content-Type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename=woocommerce-export-' . date('Y-m-d') . '.csv');

    $output = fopen('php://output', 'w');

    // Заголовки CSV (пример: ID, Название, Цена, Категории, Артикул)
    fputcsv($output, ['ID', 'Название', 'Цена', 'Категории', 'Артикул']);

    $args = [
        'post_type' => 'product',
        'posts_per_page' => -1,
        'post_status' => 'publish',
    ];

    $products = get_posts($args);

    foreach ($products as $product_post) {
        $product = wc_get_product($product_post->ID);
        $categories = wp_get_post_terms($product_post->ID, 'product_cat', ['fields' => 'names']);

        $row = [
            $product->get_id(),
            $product->get_name(),
            $product->get_price(),
            implode('|', $categories),
            $product->get_sku(),
        ];

        fputcsv($output, $row);
    }

    fclose($output);
    exit;
}

Проверка результата: как убедиться, что экспорт работает правильно

  • Перейдите в WooCommerce > Экспорт CSV;
  • Нажмите кнопку «Скачать CSV»;
  • Откройте скачанный файл в любом редакторе CSV;
  • Проверьте, что содержатся все опубликованные товары, корректно отображаются названия, цены, категории и артикулы;
  • Убедитесь, что символы кодируются в UTF-8 и разделитель — запятая (проверьте в редакторе таблиц).

Частые ошибки и их устранение при кастомном экспорте

  • Пустой CSV файл: проверьте правильность аргументов в get_posts, статус и тип поста;
  • Кодировка и символы: если русский язык отображается некорректно, убедитесь, что заголовок Content-Type передается с charset=utf-8 и редактор таблиц открывает файл с UTF-8;
  • Ошибка доступа: функция current_user_can('manage_woocommerce') ограничивает доступ. Проверьте роль пользователя;
  • Перегрузка памяти и таймаут: при большом количестве товаров используйте пакетную обработку с пагинацией.

Практические советы по оптимизации и безопасности

  • Для больших каталогов используйте WP_Query с пагинацией, чтобы выгружать товары по частям и не перегружать сервер;
  • Перед выгрузкой можно добавить фильтры, например, дата создания товара или категория, чтобы выгружать только нужный набор;
  • Ограничьте доступ к странице экспорта только админам или менеджерам WooCommerce;
  • Для повышения производительности отключите в админке ненужные хуки и фильтры на время экспорта;
  • Храните экспортируемые данные временно в оперативной памяти, чтобы не захламлять сервер файлами.

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

МетодПреимуществаНедостаткиПример
Стандартный экспорт WooCommerce Простота, встроенный функционал Ограниченный функционал, нельзя кастомизировать поля WooCommerce > Инструменты > Экспорт
Плагины для экспорта Расширенные возможности, фильтры, планировщик задач Нагрузка на сайт, зависимости, возможные конфликты WooCommerce CSV Export, WP All Export
Кастомный код (текущий) Гибкость, минимальная нагрузка, полный контроль Требует навыков разработки, поддержка кода на владельце PHP-функция с wp_get_posts, wc_get_product
WooCommerce: как избежать конфликтов между кастомными плагинами
23.06.2026
WooCommerce: как отключить автоматическое обновление статуса заказов
10.06.2026
Как создать автоматический отчет о проблемах безопасности WordPress
21.03.2026
Как удалить дубликаты записей в WordPress
18.03.2026
Как создать автоматические уведомления о обновлениях плагинов WordPress
05.02.2026