Хуки (hooks) — одна из самых мощных возможностей WordPress, позволяющая вмешиваться в ход выполнения системы без изменения исходного кода. Если вы хотите автоматизировать задачи на сайте, создавать кастомные функции или интегрировать сторонний функционал, то хуки — ваш главный инструмент. В этой статье разберём, как использовать хуки WordPress для автоматизации, покажем реальные примеры и рекомендации по написанию кода.
Что такое хуки в WordPress: actions и filters
В WordPress два основных типа хуков: actions и filters. Actions позволяют «подцепиться» к определённому событию и выполнить свою функцию, а filters — изменить данные перед их выводом или сохранением.
Например, action save_post запускается после сохранения записи, а filter the_content позволяет менять содержимое поста перед выводом.
Понимание разницы критично для грамотного использования хуков в автоматизации.
Action hooks — автоматизация после событий
Action-хуки применяются для запуска функций в момент, когда происходит определённое действие. Например, отправить уведомление после публикации записи, обновить кэш, изменить метаданные или запустить интеграцию с внешним сервисом.
Пример регистрации action-хука:
add_action('save_post', 'wpmoney_save_post_action');
function wpmoney_save_post_action($post_id) {
// Логика, выполняемая после сохранения поста
}Filter hooks — изменение данных на лету
Filters позволяют изменять данные, которые WordPress обрабатывает. Это может быть контент поста, заголовки, выводимые CSS-классы и многое другое.
Пример фильтра для добавления текста в конец контента:
add_filter('the_content', 'wpmoney_append_content');
function wpmoney_append_content($content) {
if (is_single()) {
$content .= '<p>Спасибо за чтение на WPMoney!</p>';
}
return $content;
}Примеры автоматизации задач с помощью хуков WordPress
1. Автоматическое добавление пользовательских метаданных при публикации записи
Допустим, нужно при публикации поста автоматически проставлять метаданные, например, дату публикации в отдельном формате или флаг для дальнейшей фильтрации.
add_action('publish_post', 'wpmoney_set_custom_meta');
function wpmoney_set_custom_meta($post_id) {
if (get_post_type($post_id) !== 'post') {
return;
}
update_post_meta($post_id, '_wpmoney_published_flag', 'yes');
}Такой код можно использовать для автоматического отслеживания опубликованных записей.
2. Фильтрация и модификация заголовков записей в админке
С помощью фильтра the_title можно добавить дополнительную информацию к заголовкам в админке, например, статус или ID записи.
add_filter('the_title', 'wpmoney_modify_admin_title', 10, 2);
function wpmoney_modify_admin_title($title, $post_id) {
if (is_admin()) {
$post = get_post($post_id);
if ($post->post_type === 'post') {
$title .= ' [ID: ' . $post_id . ']';
}
}
return $title;
}Это помогает лучше ориентироваться в списках записей.
3. Автоматическая смена статуса пользователя по условию
Иногда требуется менять роль пользователя при выполнении определённого условия, например, после первого заказа или достижения баланса.
add_action('woocommerce_order_status_completed', 'wpmoney_upgrade_user_role');
function wpmoney_upgrade_user_role($order_id) {
$order = wc_get_order($order_id);
$user_id = $order->get_user_id();
if (!$user_id) {
return;
}
$user = new WP_User($user_id);
if (!in_array('premium_customer', $user->roles)) {
$user->add_role('premium_customer');
}
}Это пример, как автоматизировать маркетинговые задачи на WooCommerce с помощью хуков.
Советы по написанию и отладке хуков в WordPress
Используйте префиксы в названиях функций
Чтобы избежать конфликтов с другими плагинами и темами, обязательно добавляйте уникальный префикс к функциям, например, wpmoney_. Это защитит ваш код и упростит отладку.
Всегда проверяйте условия запуска
Перед выполнением логики убедитесь, что код вызывается в нужном контексте — проверьте тип поста, статус пользователя, страницу и другие параметры. Это предотвратит ошибки и излишнюю нагрузку.
Отладка хуков с помощью error_log и WP_DEBUG
Если что-то не работает, используйте error_log() для вывода отладочной информации в лог, включите WP_DEBUG в wp-config.php. Это поможет понять, когда и как вызываются ваши функции.
Полезные плагины для работы с хуками и автоматизацией
Для управления хуками и автоматизацией на WordPress полезны такие плагины:
- Code Snippets — позволяет добавлять собственный PHP-код без правки functions.php.
- WP Crontrol — управление планировщиком задач WP-Cron, полезно для автоматизации по расписанию.
- Clearfy Pro (подробнее на wpshop.ru) — оптимизация и тонкая настройка хуков для повышения производительности.
Заключение: хуки как ключ к гибкой автоматизации WordPress
Использование хуков — обязательный навык для любого разработчика на WordPress. С их помощью вы можете автоматизировать множество рутинных операций, интегрировать внешние сервисы и создавать индивидуальный функционал без редактирования ядра CMS.
Практикуйте написание собственного кода с хуками, тщательно тестируйте и применяйте советы из статьи, чтобы сделать ваш сайт на WordPress более умным и эффективным.