WordPress — невероятно гибкая CMS, и большая часть этой гибкости обеспечивается системой хуков. Если вы хотите кастомизировать работу сайта, добавить новый функционал или изменить поведение плагинов и тем без правки исходного кода, вам обязательно нужно разобраться с хуками.
Что такое хуки в WordPress: действия и фильтры
Хуки — это точки расширения, которые позволяют "вклиниться" в процесс выполнения кода WordPress. Их два основных типа:
- Действия (actions) — позволяют выполнять дополнительный код в определённый момент.
- Фильтры (filters) — позволяют изменить данные перед их выводом или сохранением.
Например, если вы хотите добавить текст в конец каждой записи, можно использовать action-хук the_content или фильтр с тем же названием. Разница в том, что фильтр требует вернуть изменённое значение, а действие — просто выполнить код.
Использование action-хуков для добавления функционала
Рассмотрим пример: добавим в подвал сайта текущий год с помощью action-хука wp_footer. Для этого в файле functions.php вашей темы или в собственном плагине добавим функцию с префиксом wpconsult_:
function wpconsult_add_current_year() {
echo '<p style="text-align:center;">© ' . date('Y') . ' WPConsult.ru</p>';
}
add_action('wp_footer', 'wpconsult_add_current_year');Этот код выведет в футере текущий год, что удобно для автоматического обновления информации о копирайте.
Другие полезные action-хуки
init— запускается очень рано, удобен для регистрации кастомных типов записей и таксономий.wp_enqueue_scripts— нужен для подключения стилей и скриптов.admin_menu— позволяет добавить свои пункты меню в админку.
Например, добавим собственный пункт в меню админки со страницей настроек:
function wpconsult_add_admin_menu() {
add_menu_page(
'Настройки WPConsult',
'WPConsult',
'manage_options',
'wpconsult-settings',
'wpconsult_settings_page'
);
}
add_action('admin_menu', 'wpconsult_add_admin_menu');
function wpconsult_settings_page() {
echo '<h1>Настройки WPConsult</h1><p>Здесь будут настройки плагина или темы.</p>';
}Использование фильтров для изменения данных в WordPress
Фильтры позволяют перехватывать и изменять данные. Например, изменим заголовок поста перед выводом, добавив в конце строки «- WPConsult».
function wpconsult_modify_title($title) {
if (is_singular('post')) {
$title .= ' - WPConsult';
}
return $title;
}
add_filter('the_title', 'wpconsult_modify_title');Такой подход полезен для SEO, брендинга и кастомизации.
Примеры полезных фильтров
the_content— изменить содержимое записи (например, добавить призыв к действию).excerpt_length— управлять длиной анонса записи.widget_title— изменить заголовки виджетов.
Добавим в конец каждого поста блок с призывом подписаться на новости:
function wpconsult_add_subscribe_cta($content) {
if (is_singular('post')) {
$content .= '<div style="padding:15px; background:#f0f0f0; margin-top:20px;"><strong>Подпишитесь на WPConsult, чтобы не пропустить полезные статьи!</strong></div>';
}
return $content;
}
add_filter('the_content', 'wpconsult_add_subscribe_cta');Создание собственных хуков для модульности и расширяемости
Иногда нужно, чтобы ваш код мог расширять не только WordPress, но и другие разработчики. Для этого создают собственные хуки:
function wpconsult_custom_process() {
// Делаем что-то важное
do_action('wpconsult_before_process');
// Основной код
do_action('wpconsult_after_process');
}
add_action('wpconsult_before_process', function() {
error_log('Процесс начинается');
});Это позволяет подключать дополнительные функции без правки основного кода.
Когда использовать собственные хуки
Если вы пишете сложный плагин или тему с множеством функций, собственные хуки помогут отделить логику и дать другим разработчикам возможность расширять функционал без конфликтов.
Пример: плагин для интеграции с CRM может вызывать хук wpconsult_crm_sync после успешной отправки данных, чтобы другие плагины могли реагировать на это событие.
Популярные плагины для работы с хуками и отладки
Для удобного управления хуками и отладки рекомендуем несколько плагинов:
- Query Monitor — показывает все хуки, вызываемые на странице, и время их выполнения.
- Code Snippets — удобный интерфейс для добавления кастомных функций и хуков без правки
functions.php. - Hook Me Up — визуализатор хуков, помогает понять порядок их вызова.
Использование этих инструментов значительно ускорит разработку и отладку.
Советы по работе с хуками в WordPress
При работе с хуками важно соблюдать несколько правил:
- Используйте префиксы, связанные с вашим проектом или доменом (например,
wpconsult_), чтобы избежать конфликтов. - Не подключайте тяжелый или долго выполняющийся код в хуках, влияющих на скорость загрузки страниц.
- Тестируйте хуки на разных типах страниц и пользователях, чтобы избежать ошибок.
- Документируйте свои хуки, особенно если создаёте собственные, чтобы другие разработчики понимали, как ими пользоваться.
Понимание хуков — один из ключевых навыков для успешной разработки на WordPress. Используйте их, чтобы писать чистый, расширяемый и удобный для поддержки код.