Хуки в WordPress — это мощный инструмент для изменения поведения сайта без правки ядра. Они позволяют добавлять или изменять функциональность через actions (действия) и filters (фильтры). В этой статье подробно разберём, как использовать хуки для автоматизации рутинных задач, которые часто встречаются у разработчиков и администраторов.
Что такое хуки в WordPress: основы и различия между actions и filters
Хук — это точка в коде, к которой можно «подцепить» свою функцию. Существует два типа хуков:
- Actions — позволяют выполнять код в определённый момент выполнения WordPress, например при публикации поста, загрузке страницы, регистрации пользователя.
- Filters — позволяют изменить данные перед тем, как они будут использованы или выведены, например изменить содержимое поста, заголовок, URL.
Используя хуки, можно автоматизировать задачи, которые иначе бы выполнялись вручную или с помощью громоздких решений.
Примеры автоматизации с помощью хуков в WordPress
Автоматическое удаление черновиков старше 30 дней
Чтобы не засорять базу данных, можно настроить автоматическое удаление старых черновиков. Ниже пример функции с хуком wpstandart_auto_delete_old_drafts, которую можно запускать через wp-cron:
function wpstandart_auto_delete_old_drafts() {
global $wpdb;
$date = date('Y-m-d H:i:s', strtotime('-30 days'));
$wpdb->query(
$wpdb->prepare(
"DELETE FROM $wpdb->posts WHERE post_status = 'draft' AND post_date < %s",
$date
)
);
}
add_action('wp_scheduled_delete_old_drafts', 'wpstandart_auto_delete_old_drafts');Чтобы запускать это ежедневно, добавим расписание в wp-cron:
function wpstandart_setup_schedule() {
if (!wp_next_scheduled('wp_scheduled_delete_old_drafts')) {
wp_schedule_event(time(), 'daily', 'wp_scheduled_delete_old_drafts');
}
}
add_action('wp', 'wpstandart_setup_schedule');Так вы будете автоматически очищать базу от устаревших черновиков без плагинов.
Добавление автоматического уведомления администратору при регистрации нового пользователя
Часто важно сразу узнавать о новых регистрациях. Для этого используем action user_register:
function wpstandart_notify_admin_new_user($user_id) {
$user_info = get_userdata($user_id);
$to = get_option('admin_email');
$subject = 'Новая регистрация пользователя на сайте';
$message = "Зарегистрирован новый пользователь: " . $user_info->user_login . ", email: " . $user_info->user_email;
wp_mail($to, $subject, $message);
}
add_action('user_register', 'wpstandart_notify_admin_new_user');Эта простая функция сэкономит время и поможет контролировать регистрацию.
Автоматическое добавление мета-данных при публикации поста
Если нужно, чтобы все новые посты автоматически содержали определённые мета-данные (например, источник или автор), можно использовать action save_post:
function wpstandart_add_meta_on_publish($post_id) {
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
if (get_post_type($post_id) != 'post') return;
if (get_post_status($post_id) != 'publish') return;
if (!metadata_exists('post', $post_id, '_custom_source')) {
update_post_meta($post_id, '_custom_source', 'wpstandart.ru');
}
}
add_action('save_post', 'wpstandart_add_meta_on_publish');Так вы сможете автоматически добавлять нужную информацию без ручного редактирования.
Использование популярных плагинов для упрощения работы с хуками
Хотя код — мощный инструмент, для удобства и расширенных возможностей можно использовать плагины:
- Code Snippets — удобный интерфейс для добавления пользовательских функций без правки файлов темы.
- WP Crontrol — позволяет управлять расписанием wp-cron, добавлять и удалять события.
- Clearfy Pro — оптимизирует работу сайта, в том числе управляет хуками и отключает ненужные функции.
С помощью этих инструментов вы сможете быстро тестировать и внедрять автоматизацию.
Советы по написанию функций с хуками для автоматизации
При работе с хуками важно соблюдать несколько правил:
- Используйте префикс для функций, например
wpstandart_, чтобы избежать конфликтов с другими плагинами и темами. - Проверяйте условия выполнения, чтобы не запускать код лишний раз (например, проверка типа поста, статуса, автосохранения).
- Документируйте функции, чтобы было понятно, что и зачем они делают.
- Тестируйте на тестовом сайте перед внедрением на боевой проект.
Следование этим рекомендациям поможет избежать ошибок и сделать автоматизацию надёжной.
Пример комплексной автоматизации с использованием хуков и wp-cron
Разберём пример, который одновременно удаляет старые черновики и уведомляет администратора о выполнении задачи. В начале создадим функцию для удаления и отправки письма:
function wpstandart_cleanup_and_notify() {
global $wpdb;
$date = date('Y-m-d H:i:s', strtotime('-30 days'));
$deleted = $wpdb->query(
$wpdb->prepare(
"DELETE FROM $wpdb->posts WHERE post_status = 'draft' AND post_date < %s",
$date
)
);
$to = get_option('admin_email');
$subject = 'Автоматическая очистка черновиков выполнена';
$message = "Удалено черновиков: " . ($deleted !== false ? $deleted : 0);
wp_mail($to, $subject, $message);
}
add_action('wp_scheduled_cleanup_notify', 'wpstandart_cleanup_and_notify');
function wpstandart_schedule_cleanup_notify() {
if (!wp_next_scheduled('wp_scheduled_cleanup_notify')) {
wp_schedule_event(time(), 'daily', 'wp_scheduled_cleanup_notify');
}
}
add_action('wp', 'wpstandart_schedule_cleanup_notify');Таким образом, вы получите удобный и прозрачный механизм автоматизации с уведомлением.
Заключение: почему стоит использовать хуки для автоматизации в WordPress
Хуки дают полный контроль над поведением сайта, что позволяет автоматизировать рутинные задачи, экономить время и улучшать производительность. Правильное использование actions и filters вместе с планировщиком wp-cron и плагинами, такими как Clearfy Pro и Code Snippets, делает процесс гибким и удобным.
Если хотите подробнее изучить возможности оптимизации и настройки WordPress, рекомендуем обратить внимание на плагин Clearfy Pro — он содержит множество инструментов для контроля и улучшения работы сайта.