Ведение отчетности — одна из ключевых задач для онлайн-магазина на WooCommerce. Регулярные отчеты по продажам позволяют анализировать эффективность маркетинговых кампаний, контролировать остатки товаров и планировать закупки. В этой статье мы подробно рассмотрим, как автоматизировать создание отчетов по продажам в WooCommerce с помощью собственного кода и плагинов, а также интегрировать их с email-рассылкой.
Почему важно автоматизировать отчеты по продажам в WooCommerce
Ручное создание отчетов отнимает много времени и подвержено ошибкам. Автоматизация позволяет:
- Экономить время на подготовку данных
- Получать актуальные данные без задержек
- Настраивать отчеты под конкретные задачи
- Интегрировать отчеты с внешними системами и рассылками
В WooCommerce уже есть базовые отчеты, но они не всегда удобны для индивидуальных нужд. Ниже мы рассмотрим, как создать собственный отчет с кастомными метриками и отправлять его автоматически.
Создание кастомного отчета по продажам на PHP
WooCommerce хранит данные о заказах в таблицах базы данных WordPress. Для формирования отчета нам понадобится получить заказы за определенный период, сумму продаж и количество товаров.
Пример функции для получения суммарных продаж и количества заказов за последний месяц:
function wpsell_get_monthly_sales_report() {
$args = array(
'limit' => -1,
'status' => array('completed', 'processing'),
'date_created' => '>' . ( new WC_DateTime( '-30 days' ) )->format( 'Y-m-d H:i:s' ),
);
$orders = wc_get_orders( $args );
$total_sales = 0;
$total_orders = count($orders);
foreach ( $orders as $order ) {
$total_sales += $order->get_total();
}
return array(
'total_sales' => $total_sales,
'total_orders' => $total_orders,
);
}Эта функция вытягивает заказы со статусом «завершен» и «обрабатывается» за последние 30 дней, подсчитывает общую сумму и количество.
Вывод отчета в админке WordPress
Чтобы сделать отчет доступным в админке, добавим пункт меню и страницу с результатами:
function wpsell_add_sales_report_menu() {
add_menu_page(
'Отчет по продажам',
'Отчет по продажам',
'manage_woocommerce',
'wpsell-sales-report',
'wpsell_render_sales_report_page'
);
}
add_action('admin_menu', 'wpsell_add_sales_report_menu');
function wpsell_render_sales_report_page() {
$report = wpsell_get_monthly_sales_report();
echo '<h1>Отчет по продажам за последний месяц</h1>';
echo '<p>Общая сумма продаж: <strong>' . wc_price($report['total_sales']) . '</strong></p>';
echo '<p>Количество заказов: <strong>' . $report['total_orders'] . '</strong></p>';
}Теперь в админке появится раздел «Отчет по продажам» с базовой статистикой.
Автоматическая отправка отчетов по email
Отчеты полезно отправлять ответственным лицам по расписанию. Для этого можно использовать WP-Cron.
Пример кода для еженедельной отправки отчета:
// Планируем событие при активации плагина или темы
function wpsell_schedule_sales_report_email() {
if ( ! wp_next_scheduled( 'wpsell_send_sales_report_event' ) ) {
wp_schedule_event( time(), 'weekly', 'wpsell_send_sales_report_event' );
}
}
register_activation_hook( __FILE__, 'wpsell_schedule_sales_report_email' );
// Удаляем при деактивации
function wpsell_unschedule_sales_report_email() {
wp_clear_scheduled_hook( 'wpsell_send_sales_report_event' );
}
register_deactivation_hook( __FILE__, 'wpsell_unschedule_sales_report_email' );
// Обработчик события
add_action( 'wpsell_send_sales_report_event', 'wpsell_send_sales_report_email' );
function wpsell_send_sales_report_email() {
$report = wpsell_get_monthly_sales_report();
$to = 'manager@example.com';
$subject = 'Еженедельный отчет по продажам WooCommerce';
$message = "Отчет по продажам за последний месяц:\n";
$message .= "Общая сумма продаж: " . wc_price($report['total_sales']) . "\n";
$message .= "Количество заказов: " . $report['total_orders'] . "\n";
wp_mail( $to, $subject, $message );
}Таким образом, менеджер будет получать отчет автоматически каждую неделю.
Использование плагинов для расширенной отчетности
Если нужно быстро получить расширенные возможности, можно использовать плагины. Например:
- WooCommerce Customer / Order / Coupon Export — экспорт заказов и клиентов в CSV с гибкими настройками.
- Advanced WooCommerce Reporting — графики и табличные отчеты с фильтрами.
- Clearfy Pro — оптимизация сайта и расширенные настройки WooCommerce, включая аналитику.
Интеграция с этими плагинами позволяет быстро настроить нужные отчеты без разработки собственного функционала, но при этом они иногда избыточны и влияют на скорость сайта.
Практические советы по оптимизации отчетов WooCommerce
Для корректной работы отчетов при большом количестве заказов рекомендуем:
- Использовать пагинацию и фильтры для выборки данных
- Кешировать результаты запросов с помощью Transients API
- Оптимизировать запросы через индексацию базы данных
- Избегать тяжелых операций в WP-Cron, делая их асинхронно
Например, для кеширования результата функции wpsell_get_monthly_sales_report() можно использовать:
function wpsell_get_monthly_sales_report() {
$cache_key = 'wpsell_monthly_sales_report';
$cached = get_transient($cache_key);
if ($cached !== false) {
return $cached;
}
$args = array(
'limit' => -1,
'status' => array('completed', 'processing'),
'date_created' => '>' . ( new WC_DateTime( '-30 days' ) )->format( 'Y-m-d H:i:s' ),
);
$orders = wc_get_orders( $args );
$total_sales = 0;
$total_orders = count($orders);
foreach ( $orders as $order ) {
$total_sales += $order->get_total();
}
$result = array(
'total_sales' => $total_sales,
'total_orders' => $total_orders,
);
set_transient($cache_key, $result, 3600); // кеш на 1 час
return $result;
}Это значительно снизит нагрузку при частом обращении к отчету.
Вывод
Автоматизация отчетов WooCommerce — задача вполне решаемая своими силами, если знать базовые принципы работы с заказами и WP-Cron. В статье мы показали, как создать простой отчет, вывести его в админке, отправлять по email и оптимизировать работу через кеширование. Дополнительно можно использовать готовые плагины для расширенной аналитики.
Если хотите узнать больше о полезных инструментах и плагинах для WooCommerce и WordPress, загляните на wpshop.ru.