Как создать автоматический отчет по аналитике заказов в WordPress

Зачем нужен автоматический отчет по аналитике заказов

Автоматизация отчетности по заказам в 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 для передачи данных;
  • Расширенную фильтрацию по категориям товаров, клиентам и регионам.

Такой подход поможет всегда держать руку на пульсе бизнеса и быстро реагировать на изменения.

WooCommerce: как отключить автообновление платежных методов по времени
03.05.2026
Автоматическое удаление старых заказов в WordPress: практическое руководство
08.12.2025
Оптимизация обработки заказов в WordPress: лучшие практики и примеры кода
07.11.2025
Автоматизация обновления метаданных товаров WooCommerce в WordPress
07.04.2026
Автоматическая синхронизация заказов WordPress и 1С
15.01.2026