Хуки (actions и filters) — это одна из самых мощных и гибких возможностей WordPress, позволяющая изменять поведение сайта без правки исходного кода ядра и плагинов. Однако многие разработчики используют их лишь на базовом уровне, не раскрывая весь потенциал. В этой статье мы разберём, как эффективно применять хуки для решения реальных задач, с примерами кода и рекомендациями.
Что такое хуки в WordPress и зачем они нужны
Хуки позволяют «подключаться» к определённым точкам выполнения кода WordPress и выполнять свой код — это может быть добавление новых функций, изменение данных перед выводом или отмена стандартного поведения. Существует два типа хуков:
- Action (действия) — для выполнения дополнительного кода в нужный момент.
- Filter (фильтры) — для изменения данных перед их использованием или выводом.
Использование хуков — это базовый навык для кастомизации сайта, создания плагинов и тем.
Как правильно создавать свои функции с префиксом WPReg для хуков
Чтобы избежать конфликтов с другими плагинами и темами, всегда добавляйте уникальный префикс к именам своих функций, например, wpreg_. Это хорошая практика, рекомендованная в сообществе WordPress.
Пример простой функции с префиксом для фильтра:
function wpreg_change_read_more_text() {
return 'Читать далее...';
}
add_filter('the_content_more_link', 'wpreg_change_read_more_text');Такой код заменит стандартный текст ссылки «Читать далее» у постов.
Примеры использования хуков для решения конкретных задач
1. Автоматическое добавление мета-тега noindex для страниц пагинации
Пагинация часто ведёт к дублированию контента, что плохо сказывается на SEO. Можно добавить следующий фильтр, который добавит мета-тег noindex на все страницы пагинации:
function wpreg_add_noindex_to_paged() {
if (is_paged()) {
echo '<meta name="robots" content="noindex,follow">';
}
}
add_action('wp_head', 'wpreg_add_noindex_to_paged');Этот код подключается к хук wp_head и вставляет мета-тег, если текущая страница — пагинация.
2. Отключение Gutenberg (блокового редактора) для определённых типов записей
Если вы хотите оставить классический редактор только для кастомных типов постов, используйте action use_block_editor_for_post_type:
function wpreg_disable_gutenberg_for_cpt($use_block_editor, $post_type) {
if ($post_type === 'my_custom_post') {
return false;
}
return $use_block_editor;
}
add_filter('use_block_editor_for_post_type', 'wpreg_disable_gutenberg_for_cpt', 10, 2);Это позволит гибко управлять редактором для разных типов контента.
3. Добавление кастомного класса к ссылкам меню
Иногда нужно добавить CSS класс к пунктам меню без редактирования темы. Для этого применяется фильтр nav_menu_link_attributes:
function wpreg_add_class_to_menu_links($atts, $item, $args) {
if ($args->theme_location === 'primary') {
$atts['class'] = 'custom-menu-link';
}
return $atts;
}
add_filter('nav_menu_link_attributes', 'wpreg_add_class_to_menu_links', 10, 3);Так вы добавите класс custom-menu-link ко всем ссылкам главного меню.
Как отлаживать хуки и проверять, что они сработали
Отладка — важный этап. Для проверки выполнения своих функций можно временно добавить error_log или использовать плагины для отладки, например, Query Monitor.
Пример с логированием:
function wpreg_test_hook() {
error_log('Хук wp_head сработал');
}
add_action('wp_head', 'wpreg_test_hook');Записи будут в логах PHP, что позволит убедиться в вызове функции.
Полезные плагины для работы с хуками в WordPress
Для удобства можно использовать плагины, которые помогают находить и тестировать хуки:
- Debug Bar — панель отладки для быстрого доступа к информации о хуках и запросах.
- Clearfy Pro — расширенный инструмент для оптимизации сайта и управления хуками.
Рекомендации по написанию удобочитаемых и безопасных функций для хуков
При работе с хуками важно соблюдать несколько правил:
- Всегда используйте уникальные префиксы (например,
wpreg_), чтобы избежать конфликтов. - Проверяйте входящие данные и используйте функции безопасности WordPress, например,
esc_html(),esc_url()для вывода. - Документируйте функции, чтобы другим разработчикам было понятно, что и зачем вы делаете.
- Не забудьте удалять свои хуки при деактивации плагина или темы, если это необходимо.
Соблюдение этих рекомендаций поможет поддерживать качественный и безопасный код.