Автоматизация рутинных задач — ключ к эффективному администрированию сайта на WordPress. Один из важных элементов — регулярные отчёты о состоянии сайта, активности пользователей, продажах или любой другой информации. В этой статье вы узнаете, как создать собственный модуль для автоматического сбора данных и отправки отчётов по расписанию. Мы рассмотрим интеграцию с WP-Cron, создание кастомных функций и отправку писем, а также дадим примеры кода для быстрой реализации.
Почему важен автоматический отчёт в WordPress
Большинство владельцев сайтов тратят время на ручное создание отчётов, что неудобно и неэффективно. Автоматизация позволяет:
- Экономить время на регулярных задачах;
- Получать актуальные данные без задержек;
- Поддерживать контроль над важными метриками;
- Интегрировать отчёты с другими системами или рассылками.
Реализация собственного модуля даёт полный контроль над форматом, содержанием и частотой отчётов, что часто невозможно с помощью готовых плагинов.
Использование WP-Cron для запуска отчётов по расписанию
WP-Cron — встроенный в WordPress механизм, позволяющий запускать задачи по расписанию. Для автоматического отчёта нам нужно зарегистрировать событие и обработчик. Пример функции регистрации cron-задачи:
function wpgen_schedule_report_event() {
if (!wp_next_scheduled('wpgen_daily_report_event')) {
wp_schedule_event(time(), 'daily', 'wpgen_daily_report_event');
}
}
add_action('wp', 'wpgen_schedule_report_event');
Здесь мы создали событие wpgen_daily_report_event, которое будет срабатывать каждый день. Далее нужно добавить функцию, которая будет выполнять сбор данных и отправку письма:
add_action('wpgen_daily_report_event', 'wpgen_send_daily_report');
function wpgen_send_daily_report() {
// Сбор данных для отчёта
$user_count = count_users();
$post_count = wp_count_posts()->publish;
$message = "Отчёт по сайту за сегодня:\n";
$message .= "Пользователей: {$user_count['total_users']}\n";
$message .= "Опубликованных записей: {$post_count}\n";
// Отправка письма
wp_mail('admin@example.com', 'Ежедневный отчёт сайта', $message);
}
Замените адрес admin@example.com на ваш. Этот пример можно расширить, добавив любые данные, собранные из базы или внешних API.
Создание настраиваемого REST API endpoint для получения отчётов
Для удобства интеграции отчётов с внешними сервисами можно добавить REST API endpoint. Это позволит запрашивать отчёты по требованию или автоматизировать процесс с помощью сторонних систем.
Пример регистрации endpoint:
add_action('rest_api_init', function () {
register_rest_route('wpgen/v1', '/report', array(
'methods' => 'GET',
'callback' => 'wpgen_get_report_data',
'permission_callback' => function () {
return current_user_can('manage_options');
}
));
});
function wpgen_get_report_data() {
$data = [];
$data['users'] = count_users();
$data['posts'] = wp_count_posts()->publish;
$data['comments'] = wp_count_comments()->approved;
return rest_ensure_response($data);
}
Теперь по адресу /wp-json/wpgen/v1/report с соответствующими правами администратора можно получить JSON с актуальной статистикой.
Пример расширенного отчёта с графиками и форматированием
Для наглядности и удобства чтения можно включить в отчёт HTML-форматирование и графики. Например, с помощью библиотеки Chart.js можно генерировать изображения графиков и прикреплять их к письму.
Идея реализации:
- Собрать статистику за определённый период;
- Сформировать HTML-шаблон с таблицами и графиками;
- Использовать библиотеку для создания графиков в формате изображения;
- Прикрепить графики к письму и отправить.
Для генерации графиков на стороне сервера можно использовать PHP-библиотеки, например, JpGraph. Ниже пример создания простого графика активности публикаций:
function wpgen_generate_posts_chart() {
// Подключение JpGraph и создание графика
// ... код генерации графика ...
return '/path/to/generated/chart.png';
}
Далее этот файл можно прикрепить к письму через wp_mail с параметром attachments.
Советы по безопасности и производительности
При создании автоматических отчётов важно учитывать несколько моментов:
- Не перегружайте сервер сложными запросами — разбивайте задачу на части;
- Используйте transient API для кэширования результатов, чтобы не запрашивать данные повторно;
- Ограничивайте доступ к REST API только доверенным пользователям или по токенам;
- Обрабатывайте ошибки отправки почты и логируйте их для отладки;
- Следите за временем выполнения cron-задач, чтобы не приводить к таймаутам.
Интеграция с плагинами WPShop для расширения функционала
Если вы используете плагины из набора WPShop, например, Expert Review или ABC Pagination, можно добавить в отчёт данные из этих плагинов. Например, статистику отзывов или просмотров страниц.
Для этого достаточно использовать их API или функции и добавить полученные данные в тело письма или JSON-ответ REST API.
Заключение
Создание собственного модуля автоматического отчёта в WordPress — отличное решение для администраторов и разработчиков, которые хотят иметь полный контроль и гибкость. Используя WP-Cron, REST API, кастомные функции и интеграцию с плагинами, вы сможете настроить удобную систему мониторинга и уведомлений, которая упростит работу и повысит эффективность управления сайтом.