В WordPress хуки (actions) и фильтры (filters) — это мощный инструмент, который позволяет разработчикам расширять и изменять стандартное поведение системы без изменения исходного кода ядра и плагинов. Если вы только начинаете разбираться с внутренним устройством WordPress, понимание хуков и фильтров значительно упростит вам жизнь и позволит создавать гибкие решения.
Что такое хуки в WordPress и зачем они нужны
Хуки — это специальные точки в коде WordPress, где можно «подцепить» свою функцию и выполнить дополнительный код. Они бывают двух типов: действия (actions) и фильтры (filters).
Actions — это хуки, которые просто вызывают вашу функцию в определённый момент (например, при загрузке страницы, при сохранении поста). Они позволяют выполнять дополнительные операции.
Filters — хуки, которые принимают данные, позволяют их изменить и вернуть обратно. Например, можно изменить текст перед выводом на экран.
Примером action-хука служит wp_head, который вызывается в секции <head> темы. Вы можете добавить туда свой код, например подключить CSS.
Пример использования action-хука
Добавим подключение кастомного стиля через hook wp_head в файл functions.php вашей темы:
function wpupdate_add_custom_style() {
echo '<style>body { background-color: #f0f0f0; }</style>';
}
add_action('wp_head', 'wpupdate_add_custom_style');Этот код добавит серый фон ко всем страницам сайта, не меняя файл темы напрямую.
Фильтры в WordPress — как изменить данные на лету
Фильтры принимают один или несколько параметров, позволяют изменить их и вернуть обратно. Это мощный способ корректировать вывод без копирования и изменения плагинов.
Классический пример — фильтр the_content, который изменяет содержимое поста перед выводом.
Пример изменения контента через фильтр
Добавим текст в конец каждого поста:
function wpupdate_append_text_to_post($content) {
if (is_single()) {
$content .= '<p><em>Спасибо за прочтение!</em></p>';
}
return $content;
}
add_filter('the_content', 'wpupdate_append_text_to_post');Такой подход позволяет точно и легко вносить изменения в контент без риска повредить исходные файлы.
Как найти подходящие хуки и фильтры для своих задач
WordPress содержит сотни встроенных хуков и фильтров. Чтобы узнать, какие есть, можно использовать несколько подходов:
- Посмотреть официальную документацию на WordPress Developer Resources.
- Использовать плагин Query Monitor или Debug Bar, которые показывают активные хуки при работе сайта.
- Искать в коде темы или плагина вызовы
do_action()иapply_filters().
Например, если вам нужно добавить код в футер, ищите action wp_footer. Для изменения заголовка поста — фильтр the_title.
Практические примеры использования хуков и фильтров
Автоматическое добавление мета-тега в заголовок сайта
Допустим, вы хотите добавить в раздел <head> уникальный мета-тег, например для верификации сайта:
function wpupdate_add_meta_verification() {
echo '<meta name="google-site-verification" content="ваш_код_верификации" />';
}
add_action('wp_head', 'wpupdate_add_meta_verification');Без правки файлов темы вы расширили функциональность.
Изменение текста кнопки "Читать далее" на странице блога
Стандартный текст "Read More" или "Читать далее" можно заменить через фильтр:
function wpupdate_change_read_more_text() {
return 'Подробнее »';
}
add_filter('the_content_more_link', 'wpupdate_change_read_more_text');Так вы делаете сайт более уникальным и адаптированным под вашу аудиторию.
Отключение автоматического добавления параграфов в контент
WordPress автоматически вставляет теги <p> и <br> через функцию wpautop. Иногда это мешает, например при работе с HTML-кодом в постах.
remove_filter('the_content', 'wpautop');Этот код отключит автопараграфы для всего контента.
Полезные плагины для работы с хуками и фильтрами
Если хотите посмотреть, какие хуки срабатывают на страницах сайта, обратите внимание на следующие плагины:
- Simply Show Hooks — выводит список хуков, которые доступны на текущей странице.
- Hook Me Up — помогает понять, какие хуки используются плагинами и темами.
- Code Snippets — удобный менеджер для добавления пользовательских функций с хуками и фильтрами без редактирования functions.php.
Использование этих инструментов значительно упрощает отладку и разработку.
Создаем собственный хук: расширяем возможности темы или плагина
Вы можете создавать свои хуки, чтобы другие разработчики или вы сами могли подключать дополнительный функционал.
Для создания action-хука используйте do_action. Пример:
function wpupdate_my_custom_function() {
do_action('wpupdate_before_content');
echo '<div>Основной контент здесь</div>';
do_action('wpupdate_after_content');
}Теперь в другом месте можно привязаться к этим хукам:
add_action('wpupdate_before_content', function() {
echo '<p>Этот текст добавлен перед контентом</p>';
});Фильтры создаются через apply_filters схожим образом.
Подводим итоги использования хуков и фильтров в WordPress
Хуки и фильтры — основа гибкой и безопасной кастомизации WordPress. Они позволяют встраиваться в логику системы без изменений ядра, что облегчает обновления и поддержку сайта.
Если вы еще не использовали хуки, начните с простых примеров из статьи, постепенно изучая официальную документацию и пробуя разные варианты.
Используйте плагины для мониторинга и добавления кода, чтобы избежать ошибок и не потерять изменения при обновлениях.