Зачем нужен автоматический отчет по аналитике заказов
Автоматизация отчетности по заказам в WordPress — важная задача для любого владельца интернет-магазина или сайта с системой заказов. Вручную собирать данные долго и неудобно, особенно если заказов много. Автоматический отчет позволит регулярно получать сводную информацию о продажах, статусах заказов, выручке и других ключевых показателях без лишних усилий.
Кроме того, такой отчет можно настроить на отправку по email или интеграцию с CRM, чтобы всегда быть в курсе ситуации. В этой статье разберем, как создать собственный автоматический отчет по аналитике заказов с примерами кода и рекомендациями по плагинам.
Подготовка: какие данные анализировать в отчете по заказам
Прежде чем приступать к коду, определимся, что именно важно включить в отчет:
- Общее количество заказов за выбранный период;
- Суммарная выручка за период;
- Распределение заказов по статусам (в обработке, выполнены, отменены);
- Топ товаров по количеству продаж и выручке;
- Средний чек;
- График динамики заказов по дням или неделям.
Такой набор показателей позволит быстро оценить ситуацию и принять решения по развитию магазина.
Выбор плагина для работы с заказами
Для примера возьмем WooCommerce, так как он — самый популярный плагин для заказов в WordPress. Однако подход можно адаптировать под другие решения с заказами.
Для автоматизации отчетов рекомендую обратить внимание на плагин ABC Pagination, который упрощает работу с большими массивами данных и пагинацию в интерфейсе отчетов.
Создаем функцию для сбора данных заказов
Начнем с функции, которая будет собирать необходимую статистику. Ее можно добавить в файл functions.php темы или в собственный плагин.
function wporder_get_orders_report_data($start_date, $end_date) {
$args = [
'status' => ['completed', 'processing', 'on-hold'],
'date_created' => $start_date . '...' . $end_date,
'limit' => -1,
'return' => 'ids',
];
$order_ids = wc_get_orders($args);
$total_orders = count($order_ids);
$total_revenue = 0;
$status_counts = [
'completed' => 0,
'processing' => 0,
'on-hold' => 0,
];
$products_sales = [];
foreach ($order_ids as $order_id) {
$order = wc_get_order($order_id);
$total_revenue += $order->get_total();
$status = $order->get_status();
if (isset($status_counts[$status])) {
$status_counts[$status]++;
}
foreach ($order->get_items() as $item) {
$product_id = $item->get_product_id();
$qty = $item->get_quantity();
$line_total = $item->get_total();
if (!isset($products_sales[$product_id])) {
$products_sales[$product_id] = ['qty' => 0, 'total' => 0];
}
$products_sales[$product_id]['qty'] += $qty;
$products_sales[$product_id]['total'] += $line_total;
}
}
$average_order_value = $total_orders > 0 ? round($total_revenue / $total_orders, 2) : 0;
arsort($products_sales); // сортируем по убыванию продаж
return [
'total_orders' => $total_orders,
'total_revenue' => $total_revenue,
'status_counts' => $status_counts,
'products_sales' => $products_sales,
'average_order_value' => $average_order_value,
];
}Эта функция получает заказы за период, подсчитывает количество, сумму, распределение по статусам, а также собирает данные по товарам.
Вывод отчета в административной панели
Чтобы удобно просматривать отчет, добавим новую страницу в меню WordPress. Для этого используем хук admin_menu и отобразим данные в таблице:
function wporder_add_report_menu() {
add_menu_page(
'Отчет по заказам',
'Отчет заказов',
'manage_woocommerce',
'wporder_orders_report',
'wporder_render_orders_report',
'dashicons-analytics',
56
);
}
add_action('admin_menu', 'wporder_add_report_menu');
function wporder_render_orders_report() {
// Период - последние 30 дней
$end_date = date('Y-m-d');
$start_date = date('Y-m-d', strtotime('-30 days'));
$data = wporder_get_orders_report_data($start_date, $end_date);
echo '<div class="wrap"><h1>Отчет по заказам за последние 30 дней</h1>';
echo '<p>Период с <strong>' . esc_html($start_date) . '</strong> по <strong>' . esc_html($end_date) . '</strong></p>';
echo '<h2>Основные показатели</h2>';
echo '<ul>';
echo '<li>Всего заказов: ' . esc_html($data['total_orders']) . '</li>';
echo '<li>Общая выручка: ' . wc_price($data['total_revenue']) . '</li>';
echo '<li>Средний чек: ' . wc_price($data['average_order_value']) . '</li>';
echo '</ul>';
echo '<h2>Распределение по статусам</h2>';
echo '<ul>';
foreach ($data['status_counts'] as $status => $count) {
echo '<li>' . esc_html(ucfirst($status)) . ': ' . esc_html($count) . '</li>';
}
echo '</ul>';
echo '<h2>Топ товаров по продажам</h2>';
echo '<table class="wp-list-table widefat fixed striped"><thead><tr><th>Товар</th><th>Количество</th><th>Выручка</th></tr></thead><tbody>';
$top_products = array_slice($data['products_sales'], 0, 10, true);
foreach ($top_products as $product_id => $stats) {
$product = wc_get_product($product_id);
if (!$product) continue;
echo '<tr>';
echo '<td>' . esc_html($product->get_name()) . '</td>';
echo '<td>' . esc_html($stats['qty']) . '</td>';
echo '<td>' . wc_price($stats['total']) . '</td>';
echo '</tr>';
}
echo '</tbody></table>';
echo '</div>';
}Этот код добавит пункт меню «Отчет заказов» с простым, но информативным отчетом.
Автоматическая отправка отчета по email
Чтобы не заходить постоянно в админку, можно настроить автоматическую отправку отчета на почту. Для этого используем WP Cron и функцию отправки письма.
function wporder_send_orders_report_email() {
$end_date = date('Y-m-d');
$start_date = date('Y-m-d', strtotime('-30 days'));
$data = wporder_get_orders_report_data($start_date, $end_date);
ob_start();
echo '<h2>Отчет по заказам за последние 30 дней</h2>';
echo '<p>Период: ' . esc_html($start_date) . ' - ' . esc_html($end_date) . '</p>';
echo '<ul>';
echo '<li>Всего заказов: ' . esc_html($data['total_orders']) . '</li>';
echo '<li>Общая выручка: ' . wc_price($data['total_revenue']) . '</li>';
echo '<li>Средний чек: ' . wc_price($data['average_order_value']) . '</li>';
echo '</ul>';
$message = ob_get_clean();
wp_mail('manager@yourstore.com', 'Автоматический отчет по заказам', $message, ['Content-Type: text/html; charset=UTF-8']);
}
// Регистрируем событие WP Cron, если не существует
if (!wp_next_scheduled('wporder_daily_orders_report_event')) {
wp_schedule_event(time(), 'daily', 'wporder_daily_orders_report_event');
}
add_action('wporder_daily_orders_report_event', 'wporder_send_orders_report_email');Не забудьте заменить email на нужный.
Заключение и рекомендации по расширению
Мы рассмотрели способ создания автоматического отчета по аналитике заказов в WordPress с помощью WooCommerce. Использовали стандартные функции API WooCommerce, создали удобный интерфейс в админке и настроили автоматическую отправку по email.
Дальше можно добавить:
- Графики с динамикой заказов с помощью WPRemark или Chart.js;
- Интеграцию с CRM через API для передачи данных;
- Расширенную фильтрацию по категориям товаров, клиентам и регионам.
Такой подход поможет всегда держать руку на пульсе бизнеса и быстро реагировать на изменения.