Хуки — одна из самых мощных и гибких возможностей WordPress, позволяющая изменять поведение ядра, тем и плагинов без правки исходного кода. В этой статье разберёмся, что такое хуки, как их использовать на практике, и приведём конкретные примеры с кодом.
Что такое хуки в WordPress: actions и filters
Хуки — это точки в коде WordPress, куда можно "подцепить" свои функции и таким образом изменить или дополнить стандартное поведение. Хуки делятся на два типа:
- Actions (действия) — позволяют запускать функцию в определённый момент, например, при сохранении поста, загрузке страницы или инициализации плагина.
- Filters (фильтры) — позволяют изменить данные перед выводом или сохранением, например, изменить содержимое поста или заголовок.
Понимание разницы между actions и filters — ключ к эффективному использованию хуков.
Как добавить свою функцию к хуку: базовый синтаксис
Для подключения функции к хуку используется функция add_action или add_filter. Формат следующий:
add_action('hook_name', 'wp_pro_custom_function', 10, 2);Здесь:
'hook_name'— имя хука, к которому привязываемся.'wp_pro_custom_function'— имя вашей функции.- 10 — приоритет вызова (чем меньше число, тем раньше вызовется функция).
- 2 — количество аргументов, которые функция принимает.
Пример простой функции, которая добавляет текст в конец контента поста:
function wp_pro_append_text_to_content($content) {
return $content . '<p>Спасибо, что прочитали статью!</p>';
}
add_filter('the_content', 'wp_pro_append_text_to_content');Примеры использования actions: как выполнить код в нужный момент
Рассмотрим типичные кейсы, где actions позволяют расширить функциональность.
Добавление пользовательского сообщения в админку при сохранении поста
Вы можете отследить событие сохранения поста и вывести сообщение или выполнить дополнительную логику:
function wp_pro_post_save_message($post_id) {
if (wp_is_post_revision($post_id)) {
return;
}
// Выполняем нужные действия, например, логируем
error_log('Пост с ID ' . $post_id . ' сохранён');
}
add_action('save_post', 'wp_pro_post_save_message');Такой код позволяет не только логировать, но и, например, отправлять уведомления или обновлять метаданные.
Добавление скриптов и стилей через хук wp_enqueue_scripts
Чтобы правильно подключить CSS и JS, используйте следующий пример:
function wp_pro_enqueue_custom_scripts() {
wp_enqueue_style('wp-pro-style', get_stylesheet_directory_uri() . '/css/custom-style.css');
wp_enqueue_script('wp-pro-script', get_template_directory_uri() . '/js/custom-script.js', array('jquery'), null, true);
}
add_action('wp_enqueue_scripts', 'wp_pro_enqueue_custom_scripts');Это гарантирует корректную загрузку ресурсов в тему.
Примеры использования filters: как изменить данные перед выводом
Filters дают возможность перехватить и изменить данные, которые WordPress собирается вывести или сохранить.
Изменение заголовка страницы
Можно динамически менять заголовок, например, добавлять бренд:
function wp_pro_modify_title($title) {
if (is_singular('post')) {
$title .= ' | WP-Pro.ru';
}
return $title;
}
add_filter('the_title', 'wp_pro_modify_title');Такой фильтр добавит суффикс ко всем заголовкам постов.
Фильтр контента для вставки рекламы
Вставим рекламный блок после второго абзаца поста:
function wp_pro_insert_ad_after_paragraph($content) {
if (is_single() && is_main_query()) {
$ads_code = '<div class="wp-pro-ad">Реклама здесь</div>';
$paragraphs = explode('</p>', $content);
if (count($paragraphs) > 2) {
$paragraphs[1] .= '</p>' . $ads_code;
$content = implode('', $paragraphs);
}
}
return $content;
}
add_filter('the_content', 'wp_pro_insert_ad_after_paragraph');Практические советы по работе с хуками для разработчиков WordPress
Для эффективной работы с хуками стоит учитывать несколько моментов:
- Уникальные имена функций. Рекомендуется использовать префиксы, связанные с вашим проектом или сайтом, например,
wp_pro_, чтобы избежать конфликтов. - Избегайте избыточных подключений. Подключайте функции только тогда, когда это нужно, используя проверки условий (например,
is_admin(),is_single()). - Используйте правильный приоритет. Если несколько функций подключены к одному хуку, приоритеты помогут контролировать порядок их вызова.
- Документируйте код. Пишите комментарии, чтобы другие разработчики быстро понимали назначение функций.
Отладка хуков
Для отладки хуков полезно использовать функции WordPress, например, do_action и apply_filters, а также плагины типа Query Monitor, которые показывают, какие хуки вызываются и в каком порядке.
Удаление хуков
Иногда нужно отключить стандартный хук, например, чтобы убрать функцию из темы или плагина. Для этого используется функция remove_action или remove_filter. Важно, чтобы параметры совпадали с теми, с которыми функция была добавлена.
remove_action('wp_footer', 'some_plugin_footer_function', 10);Популярные плагины для работы с хуками
Хотя хуки пишутся вручную, есть плагины, которые помогают управлять ими и тестировать:
- Code Snippets — позволяет добавлять PHP-код, в том числе хуки, прямо из админки без правки файлов.
- WP Hooks — визуализирует хуки, которые доступны на странице, что облегчает поиск нужного места для подключения функций.
- Query Monitor — для отладки, показывает активные хуки и другую информацию о запросах.
Использование этих инструментов ускорит разработку и повысит качество кода.