Автоматизация задач в WordPress — важная часть эффективного управления сайтом и анализа его работы. Часто возникает необходимость автоматически формировать отчёты по активности, контенту или статистике и отправлять их на e-mail или сохранять в админке для анализа. В этой статье мы разберём, как создать собственный плагин для автоматического отчёта в WordPress, который будет формировать данные и отправлять их по расписанию.
Почему стоит создать собственный плагин для отчётов
Существуют готовые решения, но иногда они избыточны или не покрывают специфические задачи. Создавая плагин самостоятельно, вы получаете полную гибкость в выборе данных, формате отчёта и способах доставки. Такой плагин легко адаптировать под требования сайта и автоматизировать повторяющиеся процессы.
Кроме того, собственный плагин позволяет интегрировать дополнительные функции, например, фильтрацию данных, кастомные шаблоны писем или подключение к внешним API.
Основные шаги создания плагина
Для создания плагина нам понадобится:
- Создать структуру плагина и подключить его к WordPress.
- Реализовать функцию генерации отчёта с нужными данными.
- Добавить возможность отправки отчёта по e-mail.
- Настроить планировщик заданий WP-Cron для автоматического запуска.
- Добавить страницу настроек в админке для управления параметрами отчёта.
Создание структуры плагина
Создайте папку wpnews-auto-report в wp-content/plugins/ и файл wpnews-auto-report.php с базовым описанием:
<?php
/**
* Plugin Name: WPNews Авто Отчёт
* Description: Плагин для автоматического формирования и отправки отчётов.
* Version: 1.0
* Author: WPNews
*/
// Защита от прямого вызова
if (!defined('ABSPATH')) {
exit;
}
Функция генерации отчёта
В этом примере сформируем простой отчёт по публикациям за последний день:
function wpnews_generate_daily_report() {
$args = [
'date_query' => [
[
'after' => '1 day ago',
'inclusive' => true,
],
],
'post_type' => 'post',
'posts_per_page' => -1,
];
$query = new WP_Query($args);
$report = "Отчёт по публикациям за последние 24 часа:\n";
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
$report .= '- ' . get_the_title() . ' (' . get_the_date() . ')\n';
}
wp_reset_postdata();
} else {
$report .= "Публикаций не найдено.\n";
}
return $report;
}
Отправка отчёта по e-mail
Используем стандартную функцию wp_mail для отправки сформированного отчёта:
function wpnews_send_daily_report() {
$to = get_option('wpnews_report_email', get_bloginfo('admin_email'));
$subject = 'Ежедневный отчёт сайта ' . get_bloginfo('name');
$message = wpnews_generate_daily_report();
wp_mail($to, $subject, $message);
}
Добавление задания в WP-Cron
Чтобы отчёт отправлялся автоматически, настроим ежедневный крон:
register_activation_hook(__FILE__, 'wpnews_activation_schedule');
register_deactivation_hook(__FILE__, 'wpnews_deactivation_schedule');
function wpnews_activation_schedule() {
if (!wp_next_scheduled('wpnews_daily_report_event')) {
wp_schedule_event(time(), 'daily', 'wpnews_daily_report_event');
}
}
function wpnews_deactivation_schedule() {
wp_clear_scheduled_hook('wpnews_daily_report_event');
}
add_action('wpnews_daily_report_event', 'wpnews_send_daily_report');
Добавление страницы настроек в админке
Чтобы пользователь мог задать e-mail для отправки отчётов, создадим простую страницу настроек:
add_action('admin_menu', 'wpnews_report_add_admin_menu');
add_action('admin_init', 'wpnews_report_settings_init');
function wpnews_report_add_admin_menu() {
add_options_page('WPNews Отчёты', 'WPNews Отчёты', 'manage_options', 'wpnews_report', 'wpnews_report_options_page');
}
function wpnews_report_settings_init() {
register_setting('wpnews_report_group', 'wpnews_report_email');
add_settings_section(
'wpnews_report_section',
'Настройки отчётов',
null,
'wpnews_report'
);
add_settings_field(
'wpnews_report_email',
'E-mail для отправки отчётов',
'wpnews_report_email_render',
'wpnews_report',
'wpnews_report_section'
);
}
function wpnews_report_email_render() {
$email = get_option('wpnews_report_email', get_bloginfo('admin_email'));
echo '<input type="email" name="wpnews_report_email" value="' . esc_attr($email) . '" size="40" />';
}
function wpnews_report_options_page() {
?>
<form action="options.php" method="post">
<h2>Настройки автоматических отчётов WPNews</h2>
<?php
settings_fields('wpnews_report_group');
do_settings_sections('wpnews_report');
submit_button();
?>
</form>
<?php
}
Дополнительные советы и рекомендации
Для расширения функциональности плагина можно добавить:
- Генерацию отчётов в формате HTML или PDF (с использованием библиотек вроде TCPDF или DOMPDF).
- Отчёты по другим данным: комментарии, пользователи, заказы WooCommerce.
- Интеграцию с плагином WPRemark для создания визуальных отчётов и диаграмм.
- Настройку частоты отправки отчётов через админку.
Если вы используете плагин WP-Cron от WPShop, можно интегрировать его для более надёжного выполнения заданий, учитывая особенности хостинга.
Заключение
Создание собственного плагина для автоматических отчётов в WordPress — отличное решение для тех, кто хочет получить именно ту информацию и в том формате, который нужен. Пример выше — базовый, но на его основе можно строить сложные и полезные инструменты, которые помогут улучшить управление сайтом и анализировать данные без лишнего труда.