Что такое хуки в WordPress: action и filter
В системе WordPress хуки — это точки привязки, которые позволяют разработчикам вмешиваться в работу ядра, тем и плагинов без изменения их исходного кода. Это один из основных способов расширения и кастомизации функционала. Хуки делятся на два типа: action и filter.
Action хуки позволяют выполнять дополнительные действия в определенный момент — например, добавить контент, отправить уведомление или изменить базу данных. Filter хуки дают возможность менять данные перед тем, как они будут использованы или выведены — например, отфильтровать заголовок, изменить содержимое поста или обработать параметры запроса.
Понимание и умение работать с хуками — ключевой навык для любого, кто хочет создавать качественные темы и плагины.
Как правильно использовать action хуки в WordPress
Action хуки вызываются в определенных местах кода WordPress. Чтобы подключиться к action хуку, нужно использовать функцию add_action(). Она принимает два основных параметра: имя хука и имя функции, которая будет выполнена.
Например, чтобы добавить текст в футер сайта, можно использовать хук wp_footer:
function wpmagazin_add_footer_text() {
echo '<p>Спасибо за посещение нашего сайта!</p>';
}
add_action('wp_footer', 'wpmagazin_add_footer_text');Этот код добавит простой HTML-текст в нижнюю часть страницы. Такой подход позволяет расширять функционал без правки исходных файлов темы.
Важно помнить, что функции, подключаемые к action, не должны возвращать значение — они просто выполняют действия.
Приоритет и количество аргументов
Функция add_action имеет третий и четвертый необязательные параметр — приоритет и количество принимаемых аргументов. Приоритет определяет порядок вызова функций, подключенных к одному хуку. Чем меньше число, тем раньше сработает функция.
Например, если нужно, чтобы ваша функция выполнялась после всех остальных, задайте приоритет 99:
add_action('wp_footer', 'wpmagazin_add_footer_text', 99);Количество аргументов указывается, если функция принимает параметры, передаваемые хуком.
Применение filter хуков для изменения данных в WordPress
Filter хуки позволяют изменять содержимое перед его выводом или использованием. Для подключения используется функция add_filter() с теми же параметрами, что и у add_action.
Рассмотрим пример: изменим заголовок поста, чтобы добавить к нему приставку.
function wpmagazin_modify_post_title($title) {
return '🔥 ' . $title;
}
add_filter('the_title', 'wpmagazin_modify_post_title');Теперь все заголовки постов на сайте будут начинаться с эмодзи огня. Это простой способ визуально выделить записи.
Использование фильтров для безопасности и оптимизации
Filters используются не только для визуальных изменений. Например, можно фильтровать пользовательские вводы, очищать HTML или оптимизировать запросы к базе данных.
Вот пример фильтра, который удаляет все HTML-теги из комментариев перед сохранением:
function wpmagazin_strip_comment_tags($commentdata) {
$commentdata['comment_content'] = wp_strip_all_tags($commentdata['comment_content']);
return $commentdata;
}
add_filter('preprocess_comment', 'wpmagazin_strip_comment_tags');Такой подход повышает безопасность сайта, предотвращая XSS-атаки.
Практические советы по работе с хуками
Работа с хуками требует аккуратности и понимания порядка выполнения кода. Вот несколько рекомендаций:
- Используйте префиксы в названиях функций (например, wpmagazin_), чтобы избежать конфликтов с другими плагинами.
- Не меняйте глобальные переменные напрямую внутри функций, подключенных к хукам — это может привести к непредсказуемым ошибкам.
- Документируйте свои хуки и функции, чтобы облегчить поддержку и развитие кода.
- Тестируйте изменения на локальной копии сайта перед публикацией.
Инструменты для поиска и отладки хуков
Чтобы узнать, какие хуки вызываются на странице, можно использовать плагины:
- Query Monitor — показывает активные хуки и их приоритеты.
- Simply Show Hooks — визуализирует хуки прямо на фронтенде.
Эти инструменты помогают быстро ориентироваться и находить нужные точки для расширения.
Пример создания собственного action и filter хука в плагине
Иногда полезно создавать собственные хуки, чтобы предоставить разработчикам возможность расширять ваш код.
Пример создания action хука:
function wpmagazin_custom_action() {
do_action('wpmagazin_before_content');
}
// В шаблоне вызываем этот хук
wpmagazin_custom_action();Другие разработчики смогут подключаться к wpmagazin_before_content и выполнять свои функции.
Для фильтра это выглядит так:
function wpmagazin_custom_filter($content) {
return apply_filters('wpmagazin_filter_content', $content);
}
// В шаблоне
$content = wpmagazin_custom_filter($content);Это позволит изменять содержимое через подключение к фильтру wpmagazin_filter_content.
Заключение
Хуки — неотъемлемая часть разработки на WordPress. Они дают возможность гибко и безопасно расширять функционал сайта, не вмешиваясь в ядро и сторонние плагины. Понимание разницы между action и filter, а также умение создавать собственные хуки поможет создавать качественные решения и поддерживать чистоту кода.
Используйте примеры из статьи, экспериментируйте с приоритетами и аргументами, и ваши проекты станут более мощными и управляемыми.