Автоматизация рутинных задач — один из ключевых способов оптимизировать работу с WordPress. Создание собственного плагина позволяет реализовать именно те функции, которые нужны вашему проекту, без излишней нагрузки от универсальных решений. В этой статье разберём, как создать собственный плагин для автоматизации задач на WordPress, с примерами кода и рекомендациями.
Основные шаги создания плагина для автоматизации в WordPress
Создание плагина начинается с понимания задачи, которую нужно автоматизировать. Например, это может быть автоматическая очистка неиспользуемых метаданных, отправка уведомлений, интеграция с внешними сервисами или управление кастомными постами.
Далее рассмотрим базовый шаблон плагина и его структуру:
- Создайте папку для плагина, например
wpquery-auto-tasksв каталогеwp-content/plugins/. - Внутри создайте файл
wpquery-auto-tasks.php— основной файл плагина. - Добавьте в этот файл обязательный заголовок плагина.
<?php
/*
Plugin Name: WPQuery Автоматизация задач
Description: Плагин для автоматизации рутинных задач на WordPress.
Version: 1.0
Author: WPQuery
*/
Этот минимальный код позволит WordPress распознать плагин и активировать его.
Автоматическая очистка неиспользуемых метаданных
Одна из частых задач — очистка базы от лишних метаполей, которые остались после удаления плагинов или тем. Для этого можно написать функцию, которая будет запускаться по крону WordPress.
Пример функции очистки метаданных
function wpquery_auto_delete_unused_postmeta() {
global $wpdb;
// Удаляем метаданные, у которых нет связанных постов
$wpdb->query("DELETE pm FROM {$wpdb->postmeta} pm LEFT JOIN {$wpdb->posts} p ON pm.post_id = p.ID WHERE p.ID IS NULL");
}
Для регулярного запуска этой функции используем wp_cron:
register_activation_hook(__FILE__, 'wpquery_auto_schedule_cleanup');
function wpquery_auto_schedule_cleanup() {
if (!wp_next_scheduled('wpquery_auto_cleanup_event')) {
wp_schedule_event(time(), 'daily', 'wpquery_auto_cleanup_event');
}
}
add_action('wpquery_auto_cleanup_event', 'wpquery_auto_delete_unused_postmeta');
register_deactivation_hook(__FILE__, 'wpquery_auto_unschedule_cleanup');
function wpquery_auto_unschedule_cleanup() {
$timestamp = wp_next_scheduled('wpquery_auto_cleanup_event');
wp_unschedule_event($timestamp, 'wpquery_auto_cleanup_event');
}
Этот код создаёт ежедневное событие для очистки метаданных. Благодаря этому база данных будет оставаться в порядке без вашего постоянного участия.
Автоматическая отправка уведомлений о новых комментариях
Автоматизация может помочь и с коммуникацией. Например, плагин может отправлять кастомные уведомления администраторам или модераторам, когда появляются новые комментарии.
Пример отправки кастомного письма
function wpquery_auto_notify_admin_on_comment( $comment_ID, $comment_approved ) {
if ( 1 === $comment_approved ) {
$comment = get_comment( $comment_ID );
$post = get_post( $comment->comment_post_ID );
$to = get_option('admin_email');
$subject = 'Новый комментарий на сайте';
$message = "Новый комментарий к посту: {$post->post_title}\n" .
"Автор: {$comment->comment_author}\n" .
"Текст: {$comment->comment_content}\n" .
"Ссылка: " . get_comment_link( $comment_ID );
wp_mail( $to, $subject, $message );
}
}
add_action('comment_post', 'wpquery_auto_notify_admin_on_comment', 10, 2);
Этот код отправляет письмо на почту администратора, когда комментарий одобрен. Такой подход можно расширять, добавляя фильтры по категориям, автоответы и другие сценарии.
Интеграция с внешними сервисами через REST API
Автоматизация часто требует взаимодействия с внешними сервисами. Создадим пример, который по расписанию отправляет данные о новых постах на внешний API.
Пример отправки данных по wp_remote_post
function wpquery_auto_send_new_posts_to_api() {
$args = [
'post_type' => 'post',
'post_status' => 'publish',
'date_query' => [
[
'after' => '1 day ago',
],
],
];
$posts = get_posts( $args );
if ( empty( $posts ) ) {
return;
}
$data = [];
foreach ( $posts as $post ) {
$data[] = [
'id' => $post->ID,
'title' => $post->post_title,
'link' => get_permalink( $post ),
];
}
$response = wp_remote_post( 'https://external-service.example/api/posts', [
'body' => json_encode( $data ),
'headers' => [
'Content-Type' => 'application/json',
],
'timeout' => 15,
]);
// Обработка $response при необходимости
}
add_action('wpquery_auto_send_new_posts_event', 'wpquery_auto_send_new_posts_to_api');
register_activation_hook(__FILE__, 'wpquery_auto_schedule_send_posts');
function wpquery_auto_schedule_send_posts() {
if (!wp_next_scheduled('wpquery_auto_send_new_posts_event')) {
wp_schedule_event(time(), 'daily', 'wpquery_auto_send_new_posts_event');
}
}
register_deactivation_hook(__FILE__, 'wpquery_auto_unschedule_send_posts');
function wpquery_auto_unschedule_send_posts() {
$timestamp = wp_next_scheduled('wpquery_auto_send_new_posts_event');
wp_unschedule_event($timestamp, 'wpquery_auto_send_new_posts_event');
}
Такое решение помогает автоматически синхронизировать содержимое сайта с внешними системами, например, CRM или маркетинговыми платформами.
Рекомендации по написанию плагинов для автоматизации
При создании плагинов следует соблюдать несколько важных правил:
- Используйте уникальные префиксы функций и хуков, чтобы избежать конфликтов — в статье использован префикс
wpquery_auto_. - Добавляйте возможность включать/отключать автоматизацию через настройки или хуки.
- Тестируйте работу на тестовом сервере, чтобы не допустить ошибок на рабочем сайте.
- Используйте встроенный WordPress Cron, но учитывайте, что он зависит от посещений сайта. Для критичных задач можно настроить системный cron.
- Логируйте результаты работы и ошибки для удобства отладки.
Заключение
Создание собственного плагина для автоматизации задач в WordPress — мощный инструмент для повышения эффективности работы сайта. С помощью простых функций и WordPress API можно реализовать очистку базы, уведомления, интеграции с внешними сервисами и многое другое. Используйте приведённые примеры как основу для своих решений и адаптируйте под конкретные задачи проекта.
Для расширения возможностей автоматизации рекомендуем обратить внимание на плагины из каталога WPShop, например, Clearfy Pro для оптимизации и управления сайтом, или Expert Review для автоматизации работы с отзывами.