Автоматическое создание отчёта по заказам в WordPress с фильтрами и примерами кода

Ведение отчётов по заказам – важный аспект для любого сайта на WordPress, особенно если вы используете его для интернет-магазина или сервиса с заказами. Автоматизация этого процесса позволяет своевременно получать актуальные данные, анализировать продажи и принимать бизнес-решения без лишних затрат времени.

Почему важно использовать фильтры в отчётах по заказам WordPress

Отчёты без фильтров часто содержат слишком много информации, в результате чего их сложно анализировать. Фильтры помогают сузить выборку по дате, статусу заказа, категории товаров и другим параметрам. Это существенно упрощает работу с данными и позволяет сосредоточиться на нужных показателях.

Например, вы можете вывести отчёт только по заказам за последний месяц с определённым статусом «Выполнен» или по заказам, включающим определённые товары.

Основные типы фильтров для отчётов по заказам

  • Фильтр по дате (начальная и конечная дата)
  • Фильтр по статусу заказа (выполнен, в обработке, отменён и др.)
  • Фильтр по категории товара или конкретному товару
  • Фильтр по сумме заказа (например, только заказы выше 1000 рублей)

Пример реализации автоматического создания отчёта с фильтрами в WordPress

Рассмотрим практический пример, как с помощью пользовательской функции WordPress сформировать отчёт по заказам с фильтрацией. Для примера используем стандартный тип заказа, предполагая, что заказы хранятся как кастомный тип записи shop_order и метаданные содержат статус, дату и сумму.

Создадим функцию wporder_generate_order_report, которая принимает параметры фильтра и возвращает массив заказов.

function wporder_generate_order_report($args = []) {
    $defaults = [
        'date_from' => '',
        'date_to' => '',
        'status' => '',
        'min_total' => 0
    ];
    $params = wp_parse_args($args, $defaults);

    $meta_query = [];

    if ($params['status']) {
        $meta_query[] = [
            'key' => '_order_status',
            'value' => $params['status'],
            'compare' => '='
        ];
    }

    if ($params['min_total'] > 0) {
        $meta_query[] = [
            'key' => '_order_total',
            'value' => $params['min_total'],
            'type' => 'NUMERIC',
            'compare' => '>='
        ];
    }

    $date_query = [];
    if ($params['date_from']) {
        $date_query['after'] = $params['date_from'];
    }
    if ($params['date_to']) {
        $date_query['before'] = $params['date_to'];
    }

    $query_args = [
        'post_type' => 'shop_order',
        'posts_per_page' => -1,
        'meta_query' => $meta_query,
        'date_query' => $date_query
    ];

    $query = new WP_Query($query_args);
    $orders = [];

    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            $order_id = get_the_ID();
            $orders[] = [
                'id' => $order_id,
                'date' => get_the_date('', $order_id),
                'status' => get_post_meta($order_id, '_order_status', true),
                'total' => get_post_meta($order_id, '_order_total', true),
                'customer' => get_post_meta($order_id, '_order_customer_name', true),
            ];
        }
        wp_reset_postdata();
    }

    return $orders;
}

Эта функция позволяет получить список заказов с применением фильтров по дате, статусу и минимальной сумме.

Вывод отчёта в таблицу с возможностью экспорта

Для удобства восприятия данных можно вывести отчёт в виде HTML-таблицы на странице администратора или в отдельном шаблоне. Ниже пример функции для генерации таблицы из массива заказов:

function wporder_render_order_report_table($orders) {
    if (empty($orders)) {
        echo '<p>Заказы не найдены по заданным фильтрам.</p>';
        return;
    }

    echo '<table border="1" cellpadding="8" cellspacing="0" style="border-collapse: collapse; width: 100%;">';
    echo '<thead><tr><th>ID заказа</th><th>Дата</th><th>Статус</th><th>Сумма</th><th>Покупатель</th></tr></thead>';
    echo '<tbody>';
    foreach ($orders as $order) {
        echo '<tr>';
        echo '<td>' . esc_html($order['id']) . '</td>';
        echo '<td>' . esc_html($order['date']) . '</td>';
        echo '<td>' . esc_html($order['status']) . '</td>';
        echo '<td>' . esc_html(number_format(floatval($order['total']), 2)) . '</td>';
        echo '<td>' . esc_html($order['customer']) . '</td>';
        echo '</tr>';
    }
    echo '</tbody></table>';
}

Также можно добавить кнопку для экспорта в CSV. Для этого реализуем простейшую функцию экспорта:

function wporder_export_orders_to_csv($orders) {
    if (empty($orders)) {
        return;
    }

    header('Content-Type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename=orders_report.csv');

    $output = fopen('php://output', 'w');
    fputcsv($output, ['ID заказа', 'Дата', 'Статус', 'Сумма', 'Покупатель']);

    foreach ($orders as $order) {
        fputcsv($output, [$order['id'], $order['date'], $order['status'], $order['total'], $order['customer']]);
    }
    fclose($output);
    exit();
}

Использование плагина для расширенной аналитики и автоматизации

Если не хочется писать всё с нуля, можно использовать готовые плагины, например Clearfy Pro. Этот плагин помогает оптимизировать работу сайта и содержит инструменты для управления заказами и аналитики.

Также можно интегрировать автоматическую отправку отчётов по email с помощью WPRemark — плагин для автоматизации email-рассылок с кастомными шаблонами.

Рекомендации по оптимизации и безопасности

При работе с большими объёмами заказов важно учитывать производительность. Используйте пагинацию при выборке, кэширование результатов и оптимизируйте запросы.

Не забывайте о безопасности — проверяйте права доступа пользователей при выводе отчётов. Лучше всего ограничить просмотр отчётов администратором или менеджеру с соответствующими правами.

Для повышения безопасности и удобства можно интегрировать автоматические отчёты с REST API, что позволит создавать внешние сервисы для обработки данных.

Итоги

Автоматическое создание отчётов по заказам с фильтрами в WordPress поможет существенно упростить анализ данных и повысить эффективность управления сайтом. Приведённый пример кода демонстрирует базовый подход, который можно расширять и адаптировать под конкретные задачи.

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

Как автоматизировать отправку отзывов после заказа WooCommerce
10.04.2026
Автоматическое отключение неактивных платежных методов в WooCommerce
21.04.2026
Автоматическое создание и отправка экспресс-отчетов по заказам в WordPress
02.04.2026
Автоматическая синхронизация заказов WordPress и 1С
15.01.2026
Как создать автоматический отчет по аналитике заказов в WordPress
10.01.2026