Автоматизация отчетности по заказам — важная задача для любого владельца интернет-магазина на WooCommerce. В этой статье мы подробно разберем, как создать автоматический отчет по заказам WooCommerce с помощью PHP, который можно запускать по расписанию или использовать для генерации данных в админке.
Почему важен автоматический отчет по заказам WooCommerce
Отчеты по заказам помогают анализировать продажи, выявлять тренды и принимать обоснованные решения. Ручное формирование отчетов через админку WooCommerce часто неудобно и занимает много времени. Автоматический отчет позволяет получать актуальные данные с минимальным участием пользователя.
Такой отчет можно отправлять по почте, сохранять в файл CSV или отображать на отдельной странице в админке.
Подготовка и основные шаги создания отчета
Для создания отчета нам понадобится:
- Подключиться к базе данных WordPress и получить данные заказов.
- Использовать класс WC_Order для работы с заказами.
- Сформировать удобный формат отчета (CSV, HTML таблица и т.д.).
- Добавить возможность запуска отчета по расписанию с помощью WP-Cron.
Далее подробно рассмотрим каждый шаг.
Получение заказов с помощью WP_Query и WC_Order
Для выборки заказов используем WP_Query с типом записи shop_order. Вот пример функции, которая получает все заказы за последние 7 дней:
function wporders_get_recent_orders() {
$args = [
'post_type' => 'shop_order',
'post_status' => ['wc-completed', 'wc-processing'],
'date_query' => [
[
'after' => '7 days ago',
'inclusive' => true,
],
],
'posts_per_page' => -1,
];
$query = new WP_Query($args);
return $query->posts;
}Далее можно пройтись по полученным заказам и получить нужные поля:
function wporders_generate_report_data() {
$orders = wporders_get_recent_orders();
$report = [];
foreach ($orders as $order_post) {
$order = wc_get_order($order_post->ID);
$report[] = [
'ID' => $order->get_id(),
'Дата' => $order->get_date_created()->date('Y-m-d H:i'),
'Статус' => $order->get_status(),
'Клиент' => $order->get_billing_first_name() . ' ' . $order->get_billing_last_name(),
'Сумма' => $order->get_total(),
];
}
return $report;
}Формирование CSV отчета
Часто удобнее экспортировать отчет в CSV для импорта в Excel или Google Sheets. Для этого напишем функцию, которая преобразует массив данных в CSV строку:
function wporders_array_to_csv(array $data) {
if (empty($data)) {
return '';
}
ob_start();
$df = fopen('php://output', 'w');
fputcsv($df, array_keys(reset($data)));
foreach ($data as $row) {
fputcsv($df, $row);
}
fclose($df);
return ob_get_clean();
}Объединим все вместе:
function wporders_generate_csv_report() {
$report_data = wporders_generate_report_data();
return wporders_array_to_csv($report_data);
}Автоматизация отчета с помощью WP-Cron
Для автоматического формирования и отправки отчета можно использовать WP-Cron. Добавим задачу, которая будет запускаться, например, каждый день в 8 утра и отправлять CSV файл на почту.
Регистрация крона:
add_action('wporders_daily_report_event', 'wporders_send_daily_report');
function wporders_schedule_daily_report() {
if (!wp_next_scheduled('wporders_daily_report_event')) {
wp_schedule_event(strtotime('08:00:00'), 'daily', 'wporders_daily_report_event');
}
}
add_action('wp', 'wporders_schedule_daily_report');Функция отправки письма с отчетом:
function wporders_send_daily_report() {
$csv = wporders_generate_csv_report();
$to = get_option('admin_email');
$subject = 'Ежедневный отчет по заказам WooCommerce';
$headers = ['Content-Type: text/plain; charset=UTF-8'];
$attachments = [];
// Сохраним CSV во временный файл
$upload_dir = wp_upload_dir();
$file_path = $upload_dir['basedir'] . '/wporders_report_' . date('Y-m-d') . '.csv';
file_put_contents($file_path, $csv);
$attachments[] = $file_path;
wp_mail($to, $subject, 'Во вложении ежедневный отчет по заказам.', $headers, $attachments);
// Удаляем временный файл
unlink($file_path);
}Интеграция с плагинами WPShop
Для расширенной отчетности можно использовать плагин Expert Review, который позволяет собирать отзывы и рейтинги к заказам и товарам. Эти данные можно добавить в отчет для анализа.
Также полезен ABC Pagination для удобного отображения отчетов в админке с постраничной навигацией.
Выводы и рекомендации
Создание автоматического отчета по заказам WooCommerce с помощью PHP — задача вполне решаемая даже без сторонних плагинов. Главное — правильно настроить выборку данных и формат отчета.
Используйте WP-Cron для запуска отчетов в удобное время и отправляйте их на email или сохраняйте в файловой системе.
Для расширения функционала можно интегрировать сторонние плагины из каталога WPSHOP, которые добавят новые возможности по анализу заказов и отзывам.