Хуки (hooks) — это одна из ключевых возможностей WordPress, которая позволяет изменять и расширять функционал сайта без правки исходного кода ядра или плагинов. Разобраться с ними важно каждому разработчику на WordPress, особенно при решении конкретных технических задач. В этой статье подробно рассмотрим, как использовать хуки для практических целей на примерах, которые часто встречаются в разработке.
Что такое хуки в WordPress и их виды
В WordPress есть два типа хуков: actions и filters. Actions позволяют добавить или выполнить дополнительный код в определённый момент работы WordPress, а filters — менять данные до того, как они будут выведены или сохранены.
Например, action-хук wp_footer срабатывает в футере сайта, и туда можно добавить свой HTML или JS. Фильтр the_content позволяет изменить контент записи перед выводом.
Понимание разницы и правильное использование хуков — ключ к эффективной разработке.
Action-хуки: добавление функционала
Action-хуки выполняют код в определённый момент. Пример использования:
add_action('wp_footer', 'wp_kurs_add_footer_message');
function wp_kurs_add_footer_message() {
echo '<p style="text-align:center;">Спасибо за посещение нашего сайта!</p>';
}
Этот код выведет внизу каждой страницы сообщение. Очень полезно для добавления аналитики, скриптов или кастомных элементов.
Filter-хуки: изменение данных
Filters позволяют модифицировать данные. Например, изменить заголовок записи перед выводом:
add_filter('the_title', 'wp_kurs_modify_post_title');
function wp_kurs_modify_post_title($title) {
return '🔥 ' . $title;
}
Теперь ко всем заголовкам будет добавлен эмодзи. Это простой способ добавить визуальные эффекты или изменить динамически выводимые данные.
Практические задачи с хуками WordPress
Разберём конкретные задачи, которые часто встречаются в проектах, и как их решить с помощью хуков.
1. Добавление пользовательского поля в форму комментариев
Иногда нужно расширить стандартную форму комментариев дополнительным полем, например, для телефона или ссылки. Для этого используют хук comment_form_default_fields, который позволяет добавить или изменить поля.
add_filter('comment_form_default_fields', 'wp_kurs_add_phone_field_to_comment_form');
function wp_kurs_add_phone_field_to_comment_form($fields) {
$fields['phone'] = '<p class="comment-form-phone"><label for="phone">Телефон</label>'
. '<input id="phone" name="phone" type="text" size="30" /></p>';
return $fields;
}
После этого нужно сохранить и вывести это поле, используя другие хуки, например, comment_post для сохранения и comment_text для вывода.
2. Изменение URL логотипа в админке
По умолчанию логотип WordPress в админке ведёт на wordpress.org. Можно изменить ссылку на главную страницу своего сайта с помощью фильтра login_headerurl:
add_filter('login_headerurl', 'wp_kurs_custom_login_logo_url');
function wp_kurs_custom_login_logo_url() {
return home_url('/');
}
Это полезно для брендирования админки и улучшения UX.
3. Отключение редактора блоков для определённых ролей
Иногда нужно ограничить доступ к Gutenberg для пользователей с определённой ролью. Для этого можно использовать action admin_init и функцию wp_kurs_disable_gutenberg_for_role:
add_action('admin_init', 'wp_kurs_disable_gutenberg_for_role');
function wp_kurs_disable_gutenberg_for_role() {
if(current_user_can('editor')) {
add_filter('use_block_editor_for_post', '__return_false', 10);
}
}
Так редактор блоков будет отключён для редакторов, что позволяет использовать классический редактор или альтернативы.
Советы по работе с хуками в WordPress
Чтобы эффективно работать с хуками и избегать ошибок, полезно знать несколько правил:
- Используйте уникальные имена функций. Добавляйте префикс, например,
wp_kurs_, чтобы избежать конфликтов. - Понимайте приоритеты. У функции add_action/add_filter есть параметр приоритета — чем меньше число, тем раньше сработает функция.
- Не меняйте ядро WordPress. Все изменения делайте через хуки в плагинах или в functions.php вашей темы.
- Тестируйте изменения на дев-сервере. Чтобы избежать сбоев на живом сайте.
Использование плагина Clearfy Pro для управления хуками
Плагин Clearfy Pro позволяет отключать ненужные хуки и оптимизировать работу сайта. Это особенно полезно, если на сайте много плагинов, которые добавляют свои хуки и замедляют загрузку.
Выводы и рекомендации
Хуки — мощный инструмент для WordPress-разработчика. Они позволяют гибко настраивать сайт, добавлять функционал и изменять вывод без вмешательства в ядро. Изучайте доступные хуки, тестируйте свои функции и используйте лучшие практики.
Если хотите автоматизировать управление хуками и оптимизировать сайт — обратите внимание на Clearfy Pro.