В WordPress хуки (actions и filters) — это мощный инструмент для расширения функционала и автоматизации различных задач без изменения исходного кода ядра или плагинов. В этой статье подробно разберём, как использовать хуки для автоматизации рутинных процессов, приведём конкретные примеры и полезные советы для разработчиков.
Что такое хуки в WordPress и как они помогают автоматизировать задачи
Хуки — это точки в коде WordPress, где можно "прицепить" свою функцию, чтобы изменить поведение сайта или выполнить дополнительные действия. Существует два типа хуков:
- Actions — позволяют выполнить свою функцию в определённый момент (например, при сохранении записи или авторизации пользователя);
- Filters — позволяют изменить данные перед их выводом или сохранением.
Используя хуки, вы можете автоматизировать задачи — например, автоматически менять статус записи, отправлять уведомления, очищать кеш, интегрировать сторонние сервисы и многое другое.
Пример 1: Автоматическое назначение категории новой записи
Предположим, вы хотите, чтобы все новые записи автоматически получали категорию "Новости". Для этого используем хук save_post:
function wpedu_auto_set_category($post_id) {
if (wp_is_post_revision($post_id)) {
return;
}
$post_type = get_post_type($post_id);
if ($post_type !== 'post') {
return;
}
$default_cat_id = get_cat_ID('Новости');
if (!$default_cat_id) {
return;
}
wp_set_post_categories($post_id, [$default_cat_id], true);
}
add_action('save_post', 'wpedu_auto_set_category');В этом коде мы проверяем, что это не ревизия, что тип записи — пост, затем получаем ID категории "Новости" и добавляем её к записи без удаления других категорий.
Пример 2: Отправка уведомления администратору при регистрации нового пользователя
Чтобы автоматически уведомлять администратора о новых пользователях, воспользуемся хуком user_register:
function wpedu_notify_admin_new_user($user_id) {
$user_info = get_userdata($user_id);
$to = get_option('admin_email');
$subject = 'Новый пользователь на сайте';
$message = 'Зарегистрирован новый пользователь: ' . $user_info->user_login . "\nEmail: " . $user_info->user_email;
wp_mail($to, $subject, $message);
}
add_action('user_register', 'wpedu_notify_admin_new_user');Этот простой код позволит своевременно получать уведомления о новых регистрациях, что полезно для контроля и быстрого реагирования.
Пример 3: Автоматическое удаление черновиков старше 30 дней
При большом количестве записей черновики могут засорять базу. Автоматизируем их очистку с помощью планировщика WP-Cron и хука:
function wpedu_delete_old_drafts() {
$args = [
'post_type' => 'post',
'post_status' => 'draft',
'date_query' => [
[
'column' => 'post_date',
'before' => '30 days ago',
],
],
'fields' => 'ids',
'posts_per_page' => -1,
];
$drafts = get_posts($args);
foreach ($drafts as $draft_id) {
wp_delete_post($draft_id, true);
}
}
if (!wp_next_scheduled('wpedu_daily_draft_cleanup')) {
wp_schedule_event(time(), 'daily', 'wpedu_daily_draft_cleanup');
}
add_action('wpedu_daily_draft_cleanup', 'wpedu_delete_old_drafts');Здесь мы создаём функцию, которая удаляет все черновики старше 30 дней, и регистрируем ежедневное выполнение этой задачи.
Полезные плагины для работы с хуками и автоматизацией
Для разработчиков и администраторов есть несколько удобных плагинов, которые помогают управлять хуками и автоматизировать задачи без глубокого программирования:
- Clearfy Pro — позволяет отключать ненужные функции WordPress, оптимизировать работу сайта и автоматизировать очистку базы;
- Expert Review — помогает создавать автоматические отзывы и интегрировать их в шаблоны;
- My Popup — автоматизирует показ всплывающих окон по заданным условиям;
- WPRemark — инструмент для автоматического управления комментариями и отзывами.
Использование этих плагинов вместе с хуками позволит значительно расширить возможности сайта без создания сложного кода.
Советы по написанию функций для хуков
При работе с хуками важно соблюдать несколько правил:
- Используйте проверку условий внутри функций, чтобы избежать нежелательных действий (например, проверяйте тип записи, статус, права пользователя);
- Не забывайте о производительности — тяжелые операции лучше выполнять асинхронно или с помощью WP-Cron;
- Используйте префиксы для своих функций, чтобы избежать конфликтов с другими плагинами и темами, например,
wpedu_; - Тестируйте функции на тестовом сайте перед внедрением на боевой проект;
- Документируйте код, чтобы в будущем было проще вносить изменения.
Как отследить и отладить хуки в WordPress
Для отладки хуков можно использовать несколько подходов:
- Плагин Query Monitor — показывает, какие хуки работают на странице, и позволяет отследить ошибки;
- Временный вывод в лог с помощью функции
error_log()внутри ваших функций; - Использование дебаггера Xdebug для пошагового выполнения кода;
- Плагин Clearfy Pro — содержит расширенные инструменты для оптимизации и отладки.
Отладка — важный этап, особенно когда функции, подключённые к хукам, влияют на критические процессы сайта.