В WordPress хуки (hooks) — это один из самых мощных и гибких инструментов для изменения и расширения функционала без изменения исходного кода ядра или плагинов. В этой статье мы подробно разберем, что такое хуки, как с ними работать, и приведем практические примеры кода для решения реальных задач.
Что такое хуки в WordPress: action и filter
Хуки делятся на два вида: actions и filters. Они позволяют разработчикам вставлять свои функции в определенные места выполнения кода WordPress.
Action (действия)
Action-хуки позволяют выполнить код в определенный момент времени. Они не изменяют данные, а просто запускают функцию. Например, вы хотите добавить свой код после публикации поста.
Filter (фильтры)
Filter-хуки позволяют изменить данные перед выводом или сохранением. Например, вы хотите изменить заголовок поста перед отображением.
Использование action-хуков: примеры и рекомендации
Для подключения action-хука используется функция add_action(). Она принимает имя хука, вашу функцию и при необходимости приоритет и количество аргументов.
Рассмотрим пример: добавим сообщение в админ-панель при загрузке страницы.
function wpcoder_admin_notice() {
echo '<div class="notice notice-success is-dismissible"><p>Привет из wpcoder.ru!</p></div>';
}
add_action('admin_notices', 'wpcoder_admin_notice');
В данном случае функция wpcoder_admin_notice прикреплена к хуку admin_notices, который вызывается при формировании уведомлений в админке.
Пример: отправка письма при публикации поста
Допустим, нужно уведомлять администратора сайта по email каждый раз, когда пользователь публикует новый пост.
function wpcoder_notify_admin_on_publish($post_ID) {
$post = get_post($post_ID);
$author = get_userdata($post->post_author);
$to = get_option('admin_email');
$subject = 'Новая публикация на сайте';
$message = 'Пользователь ' . $author->display_name . ' опубликовал пост: ' . $post->post_title;
wp_mail($to, $subject, $message);
}
add_action('publish_post', 'wpcoder_notify_admin_on_publish');
Такой код можно добавить в functions.php вашей темы или оформить как плагин.
Использование filter-хуков: изменение данных на лету
Фильтры позволяют перехватывать и изменять данные. Для подключения используется функция add_filter() с аналогичными параметрами.
Пример: изменение заголовка поста
Добавим приставку «[WPCoder]» ко всем заголовкам постов на сайте.
function wpcoder_modify_post_title($title) {
if (is_singular('post')) {
$title = '[WPCoder] ' . $title;
}
return $title;
}
add_filter('the_title', 'wpcoder_modify_post_title');
Этот фильтр сработает при выводе заголовков через функцию the_title().
Пример: фильтрация содержимого перед выводом
Если нужно добавить подпись в конец каждого поста, можно использовать фильтр the_content:
function wpcoder_add_signature_to_content($content) {
if (is_singular('post')) {
$content .= '<p><em>Статья подготовлена командой wpcoder.ru</em></p>';
}
return $content;
}
add_filter('the_content', 'wpcoder_add_signature_to_content');
Как найти нужный хук: лучшие практики и инструменты
WordPress имеет сотни встроенных хуков. Чтобы понять, какой хук использовать, воспользуйтесь следующими советами:
- Читайте документацию на developer.wordpress.org, там есть подробные списки хуков.
- Используйте плагин Query Monitor для отладки и просмотра хуков, которые вызываются на странице.
- Поищите в исходниках темы или плагина, чтобы понять, где именно сработает хук.
- Если не знаете, какой хук выбрать, можно временно добавить универсальный action на
allи логировать вызовы:
function wpcoder_log_all_hooks($tag) {
error_log('Hook called: ' . $tag);
}
add_action('all', 'wpcoder_log_all_hooks');
Не забудьте потом удалить или закомментировать этот код, чтобы не засорять логи.
Полезные плагины для работы с хуками в WordPress
Существует несколько плагинов, которые помогут вам работать с хуками:
- Code Snippets — позволяет добавлять PHP-код (в том числе с хуками) без правки файлов темы.
- Hook Me Up — визуальный инструмент для поиска и анализа хуков.
- Simply Show Hooks — выводит на фронтенде информацию о хуках, что удобно для разработки.
Заключение по использованию хуков
Хуки — это фундаментальная часть расширения WordPress. Правильное использование action и filter-хуков позволит вам создавать мощные кастомизации, улучшать функциональность сайта без риска поломать ядро или сторонние плагины. Важно внимательно читать документацию и тестировать изменения в безопасной среде.
Используйте приведенные примеры как отправную точку для создания собственных решений на базе WordPress.