Ведение отчётов по заказам – важный аспект для любого сайта на 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 поможет существенно упростить анализ данных и повысить эффективность управления сайтом. Приведённый пример кода демонстрирует базовый подход, который можно расширять и адаптировать под конкретные задачи.
Используйте готовые плагины для ускорения разработки и автоматизации, а также не забывайте про безопасность и производительность при построении своих решений.