Хуки (hooks) — это одна из самых мощных и гибких возможностей WordPress, позволяющая разработчикам расширять и изменять функциональность без редактирования исходного кода ядра или тем. В этой статье мы подробно разберём, как работать с хуками, какие бывают типы, и приведём примеры их использования с практическим кодом.
Что такое хуки в WordPress: actions и filters
В WordPress под хуками понимаются точки расширения, в которые можно «вставить» свой код. Существует два основных типа хуков:
- Actions (действия) — позволяют вставить дополнительный код в определённое место в ходе выполнения. Они не изменяют данные, а просто выполняют функции.
- Filters (фильтры) — позволяют перехватывать и изменять данные перед их выводом или использованием в системе.
Например, если вы хотите добавить кастомный HTML в подвал сайта, используйте action-хук. Если хотите изменить формат вывода заголовка поста — примените фильтр.
Как использовать action-хуки в WordPress
Давайте рассмотрим пример добавления текста в подвал сайта с помощью action-хука wp_footer. Для этого можно добавить следующий код в файл functions.php вашей темы или в собственный плагин:
function wpnote_add_footer_text() {
echo '<p style="text-align:center; font-size:12px; color:#999;">Спасибо, что посетили наш сайт!</p>';
}
add_action('wp_footer', 'wpnote_add_footer_text');В этом примере функция wpnote_add_footer_text выводит небольшой абзац в конце страницы. Хук wp_footer вызывается в футере темы, поэтому наше сообщение появится там.
Action-хуки часто применяются для подключения скриптов, добавления элементов интерфейса или логирования событий.
Пример использования action для подключения скрипта
Чтобы подключить кастомный JavaScript файл, используйте хук wp_enqueue_scripts:
function wpnote_enqueue_custom_script() {
wp_enqueue_script('wpnote-custom-js', get_template_directory_uri() . '/js/custom.js', array('jquery'), '1.0', true);
}
add_action('wp_enqueue_scripts', 'wpnote_enqueue_custom_script');Этот код подгружает файл custom.js из папки темы, после подключения jQuery.
Как использовать filter-хуки для изменения данных
Фильтры позволяют перехватывать и изменять данные. Например, можно изменить заголовок поста перед выводом с помощью фильтра the_title:
function wpnote_modify_post_title($title) {
if (is_single()) {
$title = '⭐ ' . $title . ' ⭐';
}
return $title;
}
add_filter('the_title', 'wpnote_modify_post_title');Здесь мы добавляем звёздочки вокруг заголовка на странице одиночного поста. Функция получает оригинальный заголовок, изменяет его и возвращает обратно.
Использование фильтров для изменения контента поста
Можно добавить кастомное предупреждение в начало каждого поста, используя фильтр the_content:
function wpnote_add_warning_to_content($content) {
if (is_single()) {
$warning = '<div style="border:1px solid red; padding:10px; margin-bottom:15px; background:#ffe6e6;">Внимание: информация актуальна на момент публикации.</div>';
$content = $warning . $content;
}
return $content;
}
add_filter('the_content', 'wpnote_add_warning_to_content');Таким образом, с помощью филтров можно гибко управлять выводом контента.
Полезные плагины для работы с хуками
Если вы хотите экспериментировать с хуками без написания кода вручную, существуют плагины, которые помогают визуально управлять хуками:
- Code Snippets — позволяет добавлять и управлять сниппетами PHP-кода через админку, идеален для работы с хуками.
- Query Monitor — помогает отследить, какие хуки вызваны на странице и какие функции к ним привязаны.
- Hookr — предоставляет удобный интерфейс для изучения и тестирования хуков.
Использование этих инструментов облегчит отладку и ускорит разработку.
Советы по написанию функций для хуков
При работе с хуками важно соблюдать несколько правил:
- Уникальные имена функций. Чтобы избежать конфликтов, добавляйте префикс, например,
wpnote_. - Принимать и возвращать параметры. Особенно важно для фильтров — не забудьте вернуть изменённое или исходное значение.
- Использовать правильные приоритеты. При подключении функции к хуку можно указать приоритет и количество аргументов, например:
add_action('hook', 'func', 10, 2);. - Не перегружать хуки тяжелыми операциями. Это может замедлить сайт.
Как найти нужный хук для решения задачи
Если вы не знаете, какой хук использовать, есть несколько способов:
- Изучить документацию WordPress Codex — там подробно описаны сотни хуков.
- Использовать плагин Query Monitor, чтобы увидеть все хуки на странице.
- Посмотреть исходный код темы или плагина, где используется
do_actionилиapply_filters.
Поиск нужного хука — это ключ к эффективному расширению функционала без модификации ядра.
Заключение
Хуки — это основа гибкой разработки в WordPress. Понимание и умение использовать actions и filters позволяет создавать мощные и устойчивые решения, которые легко поддерживать и обновлять. Начинайте с простых примеров, постепенно усложняйте задачи — и вы быстро увидите, насколько расширяется потенциал вашего сайта.