Хуки — это одна из самых мощных и гибких возможностей WordPress, которая позволяет изменять и расширять функциональность без правки ядра. В этой статье мы подробно разберём, как правильно использовать хуки в WordPress на практике, рассмотрим основные типы хуков, а также приведём примеры с кодом, которые вы сможете сразу применить на своём сайте.
Что такое хуки в WordPress: action и filter
Хук (hook) — это точка в коде WordPress, где вы можете «вклиниться» своей функцией. Существует два основных типа хуков:
- Action-хуки — позволяют выполнить какую-то функцию в определённый момент времени. Например, отправить email после публикации записи или добавить скрипт в шапку.
- Filter-хуки — позволяют изменить данные перед их выводом или сохранением. Например, изменить текст заголовка или содержимое поста.
Понимание разницы между этими типами обязательно для эффективной работы с WordPress.
Основы работы с хуками: добавляем и удаляем функции
Для подключения функции к хуку используется функция add_action или add_filter. Их синтаксис:
add_action('hook_name', 'wpone_function_name', 10, 2);Параметры:
hook_name— имя хука, к которому подключаемся.wpone_function_name— имя вашей функции (рекомендуется префиксировать, например, wpone_).- 10 — приоритет выполнения, чем меньше число — тем раньше вызывается функция.
- 2 — количество аргументов, которые ваша функция принимает.
Чтобы убрать функцию из хука, используйте remove_action или remove_filter с теми же параметрами.
Практический пример 1: добавляем кастомный текст после контента записи
Допустим, нужно добавить в конце каждой записи небольшой блок с призывом подписаться на рассылку. Для этого используем filter-хук the_content, который отвечает за вывод содержимого поста.
function wpone_add_subscribe_text($content) {
if (is_singular('post')) {
$content .= '<div class="subscribe-box"><p>Подпишитесь на наши новости!</p></div>';
}
return $content;
}
add_filter('the_content', 'wpone_add_subscribe_text');В этом коде мы дописываем HTML-блок к основному содержимому. Обратите внимание на проверку is_singular('post'), чтобы не добавлять блок на страницы архива или главную.
Практический пример 2: отключаем автоматическое добавление ссылки на WordPress в футере
Некоторые темы автоматически добавляют ссылку на WordPress в нижний колонтитул. Если нужно убрать этот текст, можно воспользоваться action-хуком, который отвечает за вывод футера, или фильтрами темы.
Например, если тема использует хук wp_footer для вывода ссылки, можно попробовать следующий код:
function wpone_remove_footer_credit() {
remove_action('wp_footer', 'twentytwentyone_footer_credit');
}
add_action('init', 'wpone_remove_footer_credit');Замените twentytwentyone_footer_credit на имя функции вашей темы, которая выводит ссылку. Если имя неизвестно, используйте дебаг или обратитесь к документации темы.
Используем плагины для удобной работы с хуками
Для изучения и отладки хуков есть несколько полезных плагинов:
- Query Monitor — показывает все хуки, которые срабатывают на странице, и функции, к ним подключённые.
- Hookr — позволяет искать хуки по названию и видеть их описание.
- Simply Show Hooks — выводит на странице список хуков, которые там срабатывают, что удобно для поиска нужного места для подключения.
Эти инструменты существенно ускоряют разработку и помогают избежать ошибок.
Создание собственных хуков в теме или плагине
Вы можете создавать свои хуки для расширяемости собственного кода. Например, в теме в нужном месте вставьте:
do_action('wpone_before_content');Теперь другие разработчики или вы сами можете подключать свои функции к этому хуку:
add_action('wpone_before_content', 'wpone_custom_function');
function wpone_custom_function() {
echo '<p>Это текст до содержимого.</p>';
}То же самое работает и с фильтрами:
$title = apply_filters('wpone_custom_title', $title);Создание собственных хуков делает ваш код гибким и модульным.
Рекомендации по безопасности и производительности при работе с хуками
При использовании хуков важно соблюдать несколько правил:
- Не подключайте тяжёлые операции напрямую через хуки, особенно с низким приоритетом.
- Используйте префиксы (например, wpone_) для всех функций, чтобы избежать конфликтов с другими плагинами и темами.
- Всегда проверяйте переменные и входные данные внутри функций, подключаемых к хукам.
- По возможности удаляйте ненужные хуки, чтобы не перегружать выполнение.
Таким образом, вы сделаете свой сайт быстрее и надёжнее.
Заключение
Хуки — это ядро гибкости WordPress, позволяющее вмешиваться в работу сайта без изменения исходного кода. Освоив работу с action и filter хуками, вы сможете создавать мощные кастомизации и расширять сайт именно так, как нужно.
Используйте предоставленные примеры и инструменты, экспериментируйте и совершенствуйте свои навыки разработки на WordPress.