В работе с WordPress часто возникает необходимость автоматизировать рутинные задачи — например, очищать кэш, отправлять уведомления, создавать резервные копии или интегрироваться с внешними сервисами. Создание собственного плагина позволит вам гибко и точно настроить автоматизацию под свои нужды без лишних дополнений.
Почему стоит создавать собственный плагин для автоматизации задач в WordPress
С помощью собственного плагина вы получаете полный контроль над функционалом и его обновлениями. Это особенно важно, если задачи специфичны и не покрываются стандартными расширениями. Вы сможете избежать лишних зависимостей, улучшить производительность и обеспечить безопасность.
Кроме того, собственный плагин — это отличный способ структурировать кастомный код, минимизируя риски конфликтов и упрощая сопровождение сайта.
Типовые задачи для автоматизации в плагинах
- Автоматическое удаление ревизий и черновиков для оптимизации базы данных.
- Регулярная отправка отчетов на электронную почту.
- Автоматический кэшинг и очистка кеша.
- Интеграция с API внешних сервисов (CRM, маркетинг, аналитика).
- Автоматическое создание резервных копий.
Создание базовой структуры плагина на примере WPHelper AutoTasks
Для начала создадим минимальный каркас плагина. В папке wp-content/plugins/ создайте папку wphelper-autotasks. В ней файл wphelper-autotasks.php со следующим содержимым:
<?php
/**
* Plugin Name: WPHelper AutoTasks
* Description: Плагин для автоматизации рутинных задач в WordPress
* Version: 1.0
* Author: WPHelper
*/
// Запрет прямого доступа
if (!defined('ABSPATH')) exit;
// Хук активации плагина
register_activation_hook(__FILE__, 'wphelper_autotasks_activate');
function wphelper_autotasks_activate() {
// Например, создадим CRON-задание
if (!wp_next_scheduled('wphelper_autotasks_cron_hook')) {
wp_schedule_event(time(), 'hourly', 'wphelper_autotasks_cron_hook');
}
}
// Хук деактивации плагина
register_deactivation_hook(__FILE__, 'wphelper_autotasks_deactivate');
function wphelper_autotasks_deactivate() {
wp_clear_scheduled_hook('wphelper_autotasks_cron_hook');
}
// Основная функция, вызываемая по CRON
add_action('wphelper_autotasks_cron_hook', 'wphelper_autotasks_do_hourly_tasks');
function wphelper_autotasks_do_hourly_tasks() {
// Здесь будут задачи для автоматизации
}
Этот код создаст плагин, который при активации зарегистрирует крон-задачу, выполняемую каждый час. Деактивация плагина очистит задачу.
Пример 1: Автоматическая очистка ревизий и черновиков
Часто база данных разрастается из-за большого количества ревизий и старых черновиков. Вот как можно автоматически их удалять раз в сутки:
// Добавляем CRON-событие для ежедневной очистки
register_activation_hook(__FILE__, function() {
if (!wp_next_scheduled('wphelper_autotasks_daily_cleanup')) {
wp_schedule_event(time(), 'daily', 'wphelper_autotasks_daily_cleanup');
}
});
register_deactivation_hook(__FILE__, function() {
wp_clear_scheduled_hook('wphelper_autotasks_daily_cleanup');
});
add_action('wphelper_autotasks_daily_cleanup', 'wphelper_autotasks_delete_old_revisions');
function wphelper_autotasks_delete_old_revisions() {
global $wpdb;
// Удаляем ревизии старше 7 дней
$days = 7;
$wpdb->query($wpdb->prepare(
"DELETE FROM $wpdb->posts WHERE post_type = 'revision' AND post_date < %s",
date('Y-m-d H:i:s', strtotime("-". $days ." days"))
));
// Удаляем черновики старше 30 дней
$wpdb->query($wpdb->prepare(
"DELETE FROM $wpdb->posts WHERE post_status = 'draft' AND post_date < %s",
date('Y-m-d H:i:s', strtotime('-30 days'))
));
}
Этот код удалит ревизии и черновики, тем самым оптимизируя базу без вашего участия.
Пример 2: Автоматическая отправка отчетов на email
Иногда полезно получать отчеты о состоянии сайта или статистику. Добавим функцию отправки простого отчета раз в неделю:
add_action('wphelper_autotasks_cron_hook', 'wphelper_autotasks_send_weekly_report');
function wphelper_autotasks_send_weekly_report() {
if (date('w') !== '1') return; // Отправляем только по понедельникам
$admin_email = get_option('admin_email');
$subject = 'Еженедельный отчет сайта';
$message = 'Статистика сайта на ' . date('Y-m-d') . ":\n";
// Пример простой статистики: количество опубликованных записей
$count_posts = wp_count_posts();
$message .= 'Опубликовано записей: ' . $count_posts->publish . "\n";
wp_mail($admin_email, $subject, $message);
}
Вы можете расширить отчет, добавив данные из плагинов аналитики или пользовательские метрики.
Советы по разработке и отладке плагина для автоматизации
При создании плагина для автоматизации важно:
- Минимизировать нагрузку на сервер, особенно если задачи запускаются часто.
- Использовать
wp_schedule_eventи CRON WordPress для надежного запуска задач. - Обрабатывать и логировать ошибки для упрощения отладки.
- Сохранять результаты работы задач при необходимости в отдельной таблице или опциях.
- Проверять права доступа и безопасность при взаимодействии с внешними API.
Логирование действий
Для отладки удобно сохранять логи в файл или базу. Пример записи лога в файл:
function wphelper_autotasks_log($message) {
if (!is_dir(WP_CONTENT_DIR . '/wphelper-logs')) {
mkdir(WP_CONTENT_DIR . '/wphelper-logs', 0755, true);
}
$logfile = WP_CONTENT_DIR . '/wphelper-logs/autotasks.log';
$date = date('Y-m-d H:i:s');
error_log("[$date] $message\n", 3, $logfile);
}
// Использование в функции
wphelper_autotasks_log('Очистка ревизий выполнена успешно');
Заключение по созданию плагина WPHelper AutoTasks
Создание собственного плагина для автоматизации задач в WordPress — эффективный способ оптимизировать управление сайтом и снизить трудозатраты. Вы можете адаптировать примеры под свои задачи, расширять функционал и интегрировать с другими сервисами.
Начинайте с малого — базового каркаса и простой задачи, постепенно добавляя новые возможности. Такой подход поможет поддерживать плагин в хорошем состоянии и обеспечит стабильную работу вашего сайта.