В повседневной работе с WordPress часто возникает необходимость автоматически получать отчёты о состоянии задач, выполнении планов или обновлениях. Это особенно актуально для сайтов, где используется система управления задачами, например, на базе плагина WPTasks или кастомных решений. В этой статье разберём, как реализовать автоматическую отправку отчётов по email с подробным описанием и примерами кода.
Почему важно автоматизировать отправку отчётов в WordPress
Автоматизация отправки отчётов позволяет:
- Экономить время — не нужно вручную формировать и рассылать сводки;
- Своевременно получать актуальную информацию о состоянии задач;
- Повысить контроль над выполнением проектов и задач;
- Уменьшить риск пропуска важных событий и дедлайнов;
- Интегрировать отчёты в общую систему управления проектами.
Для сайтов с большим количеством задач или пользователей такое решение становится необходимостью.
Обзор способов реализации автоматической отправки отчётов по email
В WordPress для автоматической отправки писем можно использовать несколько подходов:
- WP-Cron — встроенный планировщик задач WordPress, который позволяет запускать функции по расписанию;
- Плагины для автоматизации — например, Clearfy Pro имеет расширенные возможности по работе с cron и email;
- Кастомные решения — написание собственного кода с использованием wp_mail() и хуков.
Рассмотрим реализацию на базе WP-Cron с примером кода, который можно адаптировать под свои задачи.
Пример кода: автоматическая отправка отчёта о задачах с WPTasks
Предположим, что у вас есть кастомный тип задач, и вы хотите раз в сутки отправлять отчёт с количеством задач и списком важных из них.
1. Регистрация cron задачи
add_action('wptasks_daily_report_event', 'wptasks_send_daily_report');
function wptasks_activate_cron() {
if (!wp_next_scheduled('wptasks_daily_report_event')) {
wp_schedule_event(time(), 'daily', 'wptasks_daily_report_event');
}
}
register_activation_hook(__FILE__, 'wptasks_activate_cron');
function wptasks_deactivate_cron() {
$timestamp = wp_next_scheduled('wptasks_daily_report_event');
wp_unschedule_event($timestamp, 'wptasks_daily_report_event');
}
register_deactivation_hook(__FILE__, 'wptasks_deactivate_cron');
Этот код создаёт ежедневное событие WP-Cron, которое будет запускать функцию wptasks_send_daily_report.
2. Функция формирования и отправки отчёта
function wptasks_send_daily_report() {
$args = array(
'post_type' => 'wptask',
'post_status' => 'publish',
'posts_per_page' => -1,
);
$tasks = get_posts($args);
$total_tasks = count($tasks);
$urgent_tasks = array_filter($tasks, function($task) {
$priority = get_post_meta($task->ID, 'priority', true);
return $priority === 'high';
});
$message = "Отчёт по задачам за сегодня:\n";
$message .= "Всего задач: " . $total_tasks . "\n";
$message .= "Срочные задачи:\n";
foreach ($urgent_tasks as $task) {
$message .= '- ' . $task->post_title . "\n";
}
$to = 'manager@yourdomain.com';
$subject = 'Ежедневный отчёт по задачам WordPress';
$headers = array('Content-Type: text/plain; charset=UTF-8');
wp_mail($to, $subject, $message, $headers);
}
В этом примере мы собираем все задачи типа wptask, подсчитываем их количество, фильтруем по мета-полю priority и формируем текст отчёта, который отправляем на email.
Дополнительные советы и улучшения для автоматизации отчётов
Чтобы сделать отправку отчётов более удобной и эффективной, рекомендуем:
- Добавить возможность отправлять отчёты в HTML-формате с таблицей и стилизацией;
- Использовать фильтры WP для изменения получателей или формата отчёта через админку;
- Интегрировать отчёты с плагинами уведомлений, например, My Popup, для отображения сообщений на сайте;
- Использовать сторонние SMTP-плагины для повышения надежности доставки писем;
- Добавить логирование отправленных отчётов для отладки и контроля.
Пример HTML письма с таблицей
function wptasks_send_daily_report() {
$args = array(
'post_type' => 'wptask',
'post_status' => 'publish',
'posts_per_page' => -1,
);
$tasks = get_posts($args);
$total_tasks = count($tasks);
$message = '<h2>Отчёт по задачам за сегодня</h2>';
$message .= '<p>Всего задач: ' . $total_tasks . '</p>';
$message .= '<table border="1" cellpadding="5" cellspacing="0">';
$message .= '<thead><tr><th>Заголовок</th><th>Приоритет</th></tr></thead>';
$message .= '<tbody>';
foreach ($tasks as $task) {
$priority = get_post_meta($task->ID, 'priority', true);
$message .= '<tr><td>' . esc_html($task->post_title) . '</td><td>' . esc_html($priority) . '</td></tr>';
}
$message .= '</tbody></table>';
$to = 'manager@yourdomain.com';
$subject = 'Ежедневный отчёт по задачам WordPress';
$headers = array('Content-Type: text/html; charset=UTF-8');
wp_mail($to, $subject, $message, $headers);
}
Использование плагинов для расширения функционала
Для упрощения настройки и расширения возможностей можно использовать готовые плагины:
- My Popup — для отображения всплывающих уведомлений и интеграции с email;
- Clearfy Pro — для расширенного управления WP-Cron и оптимизации отправки писем;
- WPRemark — для добавления оценок и комментариев, которые также можно включить в отчёты.
Эти инструменты помогут сделать отчёты более информативными и легко настраиваемыми.