Хуки (hooks) — это один из ключевых механизмов расширения и кастомизации WordPress без изменения исходного кода ядра. Они позволяют разработчикам внедрять свой код в нужные места работы сайта, изменять поведение и добавлять новые возможности. В этой статье подробно рассмотрим, как работают хуки, их виды и как создавать собственные для расширения функционала сайта на WordPress.
Что такое хуки в WordPress: actions и filters
В WordPress есть два основных типа хуков: actions (действия) и filters (фильтры). Понимание разницы между ними критично для правильного использования.
Actions (действия) — запуск кода в нужный момент
Action-хуки позволяют выполнять определённый код в заданный момент времени — например, после загрузки страницы, перед сохранением записи, при инициализации темы и др. Они не изменяют данные, а просто запускают функцию.
Пример использования action-хука:
function wpurok_add_custom_footer() {
echo '<p style="text-align:center;">Создано с помощью WPurok</p>';
}
add_action('wp_footer', 'wpurok_add_custom_footer');В этом примере функция wpurok_add_custom_footer добавляет текст в футер сайта, используя хук wp_footer.
Filters (фильтры) — изменение содержимого или данных
Фильтры позволяют изменить данные перед их выводом или использованием. Например, можно изменить заголовок поста, содержимое, ссылки и другое.
Пример фильтрации контента поста:
function wpurok_filter_content($content) {
return $content . '<p><em>Спасибо за прочтение!</em></p>';
}
add_filter('the_content', 'wpurok_filter_content');Здесь мы добавляем благодарственную фразу в конец каждого поста.
Основные хуки WordPress для разработчиков
WordPress содержит сотни хуков. Вот некоторые из наиболее часто используемых:
init— срабатывает после загрузки WordPress, хорош для регистрации новых типов записей и таксономий;wp_enqueue_scripts— для подключения стилей и скриптов;the_content— фильтр для изменения содержимого поста;save_post— действие при сохранении поста;wp_footerиwp_head— для добавления кода в футер и хедер сайта.
Использование этих хуков позволяет гибко управлять функционалом сайта и интегрировать кастомные решения.
Как создавать собственные хуки в WordPress
Иногда стандартных хуков недостаточно, и вам нужно сделать так, чтобы другие разработчики могли расширять ваш плагин или тему. Для этого можно создавать собственные action и filter хуки.
Создание собственного action-хука
Для создания action-хука используется функция do_action. Например:
function wpurok_custom_function() {
// Логика вашей функции
do_action('wpurok_before_custom_action');
// Основной код
do_action('wpurok_after_custom_action');
}Теперь другие могут подключать свои функции к этим хукам:
add_action('wpurok_before_custom_action', 'my_custom_func');
function my_custom_func() {
// Код, который выполнится до основного действия
}Создание собственного фильтра
Создаём фильтр с помощью apply_filters:
function wpurok_modify_text($text) {
$text = apply_filters('wpurok_filter_text', $text);
return $text;
}Другие разработчики смогут изменять текст так:
add_filter('wpurok_filter_text', 'my_text_modifier');
function my_text_modifier($text) {
return $text . ' - изменено через фильтр';
}Примеры полезных плагинов для работы с хуками
Для изучения и отладки хуков существуют плагины, которые сильно облегчают работу:
- Query Monitor — выводит информацию о выполненных хуках на странице, помогает понять, когда и какие хуки срабатывают.
- Hookr — позволяет искать хуки и примеры их использования.
- Simply Show Hooks — показывает на странице все хуки, которые срабатывают, что очень полезно для новичков.
Рекомендуется использовать эти инструменты для глубокого понимания работы WordPress и повышения эффективности разработки.
Полезные советы по работе с хуками в WordPress
Чтобы работа с хуками была удобной и безопасной, учтите следующие моменты:
- Именуйте функции с префиксом: Используйте уникальный префикс, например
wpurok_, чтобы избежать конфликтов с другими плагинами и темами. - Не изменяйте ядро: Используйте хуки вместо редактирования файлов ядра WordPress — это обеспечит корректные обновления и стабильность.
- Проверяйте приоритет: У хуков есть параметр приоритета — чем ниже число, тем раньше выполнится функция. Используйте его, чтобы контролировать порядок исполнения.
- Удаляйте хуки при необходимости: Иногда нужно отключить действие с помощью
remove_actionилиremove_filter.
Пример удаления стандартного действия
remove_action('wp_head', 'wp_generator'); // Убирает мета-тег версии WordPress из хедераЭто часто применяется для улучшения безопасности сайта.