Автоматический экспорт товаров в формате CSV — частая задача для интернет-магазинов на WooCommerce. Это полезно для резервного копирования, передачи данных поставщикам или интеграции с другими сервисами. В этой статье разберём, как реализовать автоматический экспорт товаров с помощью собственного кода, а также рассмотрим готовые решения и полезные плагины.
Почему важен автоматический экспорт товаров WooCommerce
Ручной экспорт через админку WooCommerce не всегда удобен, особенно если товаров много и нужно регулярно обновлять данные. Автоматизация позволяет:
- Экспортировать товары по расписанию без вашего участия;
- Настраивать формат и поля CSV согласно требованиям;
- Обрабатывать данные сразу после выгрузки (отправлять по email, загружать на FTP и т.д.);
- Экономить время и минимизировать ошибки ручного труда.
Рассмотрим, как сделать такую автоматизацию на примере собственного плагина.
Создание автоматического экспорта товаров WooCommerce в CSV с помощью PHP
Для начала создадим функцию, которая сформирует CSV файл со списком товаров. В данном примере мы выгрузим основные данные: ID, название, цену, наличие и артикул.
function wpmarket_export_woocommerce_products_csv() {
if (!class_exists('WooCommerce')) {
return new WP_Error('woocommerce_not_active', 'WooCommerce не активен');
}
$args = [
'post_type' => 'product',
'posts_per_page' => -1,
'post_status' => 'publish',
];
$products = get_posts($args);
$csv_data = [];
$header = ['ID', 'Название', 'Цена', 'Наличие', 'Артикул'];
$csv_data[] = $header;
foreach ($products as $product_post) {
$product = wc_get_product($product_post->ID);
$stock_status = $product->is_in_stock() ? 'В наличии' : 'Нет в наличии';
$csv_data[] = [
$product->get_id(),
$product->get_name(),
$product->get_price(),
$stock_status,
$product->get_sku(),
];
}
$upload_dir = wp_upload_dir();
$file_path = $upload_dir['basedir'] . '/export-products.csv';
$fp = fopen($file_path, 'w');
foreach ($csv_data as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
return $file_path;
}
Эта функция создаст CSV файл с товарами в папке загрузок WordPress. Далее нужно запустить её по расписанию.
Настройка планировщика задач (WP-Cron) для автоматического экспорта
Добавим событие, которое будет запускать экспорт каждый день:
function wpmarket_schedule_daily_export() {
if (!wp_next_scheduled('wpmarket_daily_export_hook')) {
wp_schedule_event(time(), 'daily', 'wpmarket_daily_export_hook');
}
}
add_action('wp', 'wpmarket_schedule_daily_export');
add_action('wpmarket_daily_export_hook', 'wpmarket_daily_export_task');
function wpmarket_daily_export_task() {
$file = wpmarket_export_woocommerce_products_csv();
if (!is_wp_error($file)) {
// Можно отправить файл по email или загрузить на сервер
wp_mail('admin@site.ru', 'Ежедневный экспорт товаров WooCommerce', 'Файл с товарами во вложении.', [], [$file]);
}
}
Теперь экспорт будет выполняться автоматически раз в сутки и отправлять CSV файл на почту администратора.
Использование плагинов для экспорта товаров WooCommerce
Если вы не хотите писать код, можно использовать готовые решения. Например:
- WPMarket Exporter — плагин с возможностью настроить автоматический экспорт и выгрузку CSV, интеграция с WPMarket;
- Clearfy Pro — оптимизационный плагин с дополнительными инструментами для WooCommerce, включая экспорт;
- WooCommerce Customer/Order CSV Export — популярный плагин для экспорта заказов и товаров.
Главное — выбрать инструмент, который позволит гибко настроить формат и расписание выгрузок.
Расширение функционала: экспорт с дополнительными полями и фильтрами
В реальных магазинах часто нужны дополнительные данные — например, пользовательские поля, категории, теги или отзывы. Добавим в пример функцию расширенного экспорта с категориями:
function wpmarket_export_products_with_categories_csv() {
$args = [
'post_type' => 'product',
'posts_per_page' => -1,
'post_status' => 'publish',
];
$products = get_posts($args);
$csv_data = [];
$header = ['ID', 'Название', 'Цена', 'Категории', 'Артикул'];
$csv_data[] = $header;
foreach ($products as $product_post) {
$product = wc_get_product($product_post->ID);
$categories = wp_get_post_terms($product->get_id(), 'product_cat', ['fields' => 'names']);
$csv_data[] = [
$product->get_id(),
$product->get_name(),
$product->get_price(),
implode(', ', $categories),
$product->get_sku(),
];
}
$upload_dir = wp_upload_dir();
$file_path = $upload_dir['basedir'] . '/export-products-with-categories.csv';
$fp = fopen($file_path, 'w');
foreach ($csv_data as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
return $file_path;
}
Такой подход позволяет быстро адаптировать выгрузку под любые задачи бизнеса.
Советы и лучшие практики при автоматическом экспорте товаров WooCommerce
Чтобы экспорт работал стабильно и безопасно, учитывайте следующие моменты:
- Используйте WP-Cron только для сайтов с достаточным трафиком, иначе задачи могут не запускаться вовремя. Для критичных задач лучше настроить системный cron на сервере.
- Храните выгрузки в защищённых директориях и контролируйте доступ к ним, чтобы избежать утечки данных.
- Оптимизируйте выборку товаров, если в магазине десятки тысяч товаров — используйте постраничный запрос (пагинацию) и формируйте CSV частями.
- Проверяйте корректность кодировки CSV (лучше UTF-8), чтобы избежать проблем с русскими символами.
- Если нужна интеграция с внешними сервисами, рассматривайте возможность отправки данных напрямую через API, а не через CSV.
Для расширенного управления экспортом можно использовать плагин WPMarket, который предлагает удобный интерфейс и дополнительные функции.
Заключение
Автоматический экспорт товаров WooCommerce в CSV — задача, которую можно решить как кодом, так и с помощью готовых плагинов. Написанный код легко адаптировать под конкретные нужды магазина, а интеграция с WP-Cron позволит запускать экспорт без вашего участия.
Используйте приведённые примеры как основу для своих проектов, а для более сложных сценариев рассмотрите профессиональные решения из каталога WPShop.