Хуки — это одна из ключевых возможностей WordPress, позволяющая разработчикам модифицировать или расширять функционал без изменения исходного кода ядра, тем или плагинов. В этой статье мы подробно разберём, как использовать hooks в WordPress, рассмотрим разницу между actions и filters, а также приведём практические примеры с реальным кодом.
Что такое hooks: actions и filters в WordPress
Хук — это точка в коде WordPress, в которую можно «вставить» свою функцию. Существует два основных типа хуков:
- Actions — позволяют выполнять дополнительный код в определённые моменты (например, при загрузке страницы, публикации записи и т.д.).
- Filters — позволяют изменять данные перед их выводом или сохранением.
Эта система обеспечивает гибкость и масштабируемость WordPress, ведь вы можете добавлять новые возможности или менять поведение без прямого изменения основного кода.
Как работать с actions: добавление своих функций
Чтобы добавить обработчик на action, используйте функцию add_action. Например, добавим вывод сообщения в подвал сайта:
function wpcontent_add_footer_message() {
echo '<p style="text-align:center; font-size:14px; color:#666;">Спасибо, что посетили wpcontent.ru!</p>';
}
add_action('wp_footer', 'wpcontent_add_footer_message');Здесь мы подключаем функцию wpcontent_add_footer_message к хук wp_footer, который вызывается перед закрывающим тегом </body>. Это простой способ добавить контент в подвал без правки темы.
Пример: автоматическое добавление мета-тега в head
Допустим, нужно добавить мета-тег для верификации сайта. Используем action wp_head:
function wpcontent_add_meta_verification() {
echo '<meta name="google-site-verification" content="1234567890abcdef" />';
}
add_action('wp_head', 'wpcontent_add_meta_verification');Этот код вставит нужный мета-тег в секцию <head> на всех страницах сайта.
Использование filters для изменения данных
Filters позволяют перехватывать данные, изменять их и возвращать обратно. Например, изменим текст «Читать далее» в ссылке поста:
function wpcontent_modify_read_more_text($more) {
return 'Читать полностью »';
}
add_filter('the_content_more_link', 'wpcontent_modify_read_more_text');Таким образом, мы подменили стандартный текст ссылки «Читать далее» на более привлекательный вариант.
Пример: фильтрация заголовков постов
Допустим, нужно добавить префикс к заголовкам всех постов. Используем фильтр the_title:
function wpcontent_add_prefix_to_title($title) {
if (is_singular('post')) {
$title = 'Новость: ' . $title;
}
return $title;
}
add_filter('the_title', 'wpcontent_add_prefix_to_title');Этот код добавит слово «Новость:» перед заголовком поста, но только на страницах одиночных записей.
Приоритет и параметры: тонкая настройка хуков
Функции add_action и add_filter принимают дополнительные параметры:
приоритет— число, определяющее порядок вызова функций на одном хуке (по умолчанию 10). Чем меньше число — тем раньше вызовется функция.количество аргументов— сколько параметров будет передаваться вашей функции.
Пример использования приоритета:
add_action('wp_footer', 'wpcontent_add_footer_message', 20); // вызов позже других функцийЕсли вам нужно получить параметры, передаваемые хуком, добавьте их в функцию и укажите число аргументов в add_action или add_filter:
function wpcontent_custom_filter($content, $post_id) {
// обработка
return $content;
}
add_filter('the_content', 'wpcontent_custom_filter', 10, 2);Практические советы по работе с хуками
При работе с хуками рекомендуем:
- Всегда использовать уникальные префиксы в названиях функций, чтобы избежать конфликтов (например,
wpcontent_). - Не копировать и не менять стандартные хуки ядра напрямую — используйте add_action/add_filter.
- Документировать свои функции, чтобы быстро понимать их назначение и порядок вызова.
- Отлаживать хуки можно с помощью плагинов, например, Query Monitor, чтобы видеть, какие хуки вызываются и с каким приоритетом.
Пример: удаление стандартного хука
Иногда нужно убрать действие, добавленное в ядро или плагин. Для этого используйте remove_action:
remove_action('wp_head', 'wp_generator'); // удаляет мета-тег с версией WPВажно вызывать remove_action после того, как действие было добавлено (например, в хуке init).
Заключение
Хуки — мощный инструмент для гибкой настройки WordPress. Правильное использование actions и filters позволяет создавать уникальные решения, не нарушая целостность системы и обеспечивая совместимость с обновлениями.
Надеюсь, эта статья помогла вам лучше понять, как работать с хуками. Используйте приведённые примеры и адаптируйте их под свои задачи на wpcontent.ru.