Хуки в WordPress — это один из основных инструментов для расширения и модификации функционала сайта без изменения исходного кода ядра, тем или плагинов. Они позволяют внедрять собственные функции в определённые места выполнения WordPress, что делает систему гибкой и мощной.
Что такое хуки в WordPress: actions и filters
В WordPress существуют два типа хуков: actions (действия) и filters (фильтры). Actions позволяют добавлять новый код в определённые моменты работы WordPress, а filters — изменять данные перед их отображением или сохранением.
Action-хук запускает функцию в определённый момент (например, при сохранении записи), а filter-хук принимает данные, модифицирует их и возвращает обратно для дальнейшей обработки.
Понимание разницы и правильное использование хуков — ключ к эффективной разработке на WordPress.
Пример использования action-хука
Рассмотрим простой пример, когда нужно отправить лог в файл при публикации новой записи:
function wpkey_log_new_post($post_ID) {
$post = get_post($post_ID);
if ($post->post_status == 'publish') {
error_log('Новая публикация: ' . $post->post_title);
}
return $post_ID;
}
add_action('publish_post', 'wpkey_log_new_post');Здесь мы подключаем функцию wpkey_log_new_post к действию publish_post, которое вызывается при публикации поста. Это простой способ расширить логику без правки основного кода.
Пример использования filter-хука
Фильтры позволяют, например, изменить содержимое перед выводом. Например, добавим в конец каждого поста кастомный текст:
function wpkey_add_custom_text($content) {
if (is_single()) {
$content .= '<p>Спасибо за чтение на сайте wpkey.ru!</p>';
}
return $content;
}
add_filter('the_content', 'wpkey_add_custom_text');Таким образом, используя фильтр the_content, мы подменяем контент записи, добавляя нужный текст.
Создание собственных хуков в плагинах и темах
Помимо использования стандартных хуков, разработчик может создавать свои собственные, чтобы дать возможность другим разработчикам подключать свои функции к вашему плагину или теме.
Для создания action-хука используется функция do_action, для filter-хука — apply_filters. Рассмотрим пример:
function wpkey_custom_process($data) {
// Выполняем какую-то обработку
$processed_data = strtoupper($data);
/**
* Хук фильтра для изменения обработанных данных
*/
$processed_data = apply_filters('wpkey_custom_filter', $processed_data);
/**
* Action-хук после обработки
*/
do_action('wpkey_custom_action', $processed_data);
return $processed_data;
}В этом примере мы создали фильтр wpkey_custom_filter, который позволяет изменить результат обработки, и action wpkey_custom_action, который оповещает о завершении обработки.
Как подключиться к своим хукам
Другой разработчик или вы сами можете подключиться к этим хукам так:
add_filter('wpkey_custom_filter', function($data) {
return $data . ' - дополнительно изменено';
});
add_action('wpkey_custom_action', function($data) {
error_log('Обработка завершена с данными: ' . $data);
});Это даёт мощный инструмент для расширения функционала и интеграции.
Практические советы по работе с хуками
Используйте правильные приоритеты и количество аргументов
При добавлении функции к хуку можно указать приоритет и количество передаваемых аргументов. Это важно, если несколько функций подключены к одному хуку и нужно контролировать порядок их вызова.
add_action('init', 'wpkey_init_function', 20, 2);По умолчанию приоритет — 10, а количество аргументов — 1. Чем ниже число приоритета — тем раньше выполняется функция.
Удаление хуков
Если требуется убрать ранее добавленную функцию, можно воспользоваться remove_action или remove_filter:
remove_action('init', 'wpkey_init_function', 20);Важно указывать точные имя функции и приоритет.
Отладка хуков
Для проверки, какие функции подключены к хуку, можно использовать встроенную функцию has_action или плагины для отладки, например, Query Monitor.
Использование хуков с популярными плагинами
Многие крупные плагины и темы предоставляют собственные хуки для расширения. Например, плагин Clearfy Pro предлагает хуки для управления оптимизацией и очисткой WordPress.
Пример — добавим автоматическую очистку кэша после сохранения поста с помощью Clearfy Pro (если такой хук предусмотрен):
add_action('save_post', function($post_ID) {
if (function_exists('clearfy_pro_clear_cache')) {
clearfy_pro_clear_cache();
}
});Таким образом, используя хуки плагинов, вы интегрируете собственный функционал максимально эффективно.
Заключение
Хуки — это фундаментальный механизм расширения WordPress. Освоив их, вы сможете создавать гибкие решения, не ломая ядро и не создавая конфликтов с другими плагинами и темами. Рекомендуем экспериментировать с хуками, создавать собственные и подключать сторонние, что существенно повысит качество и масштабируемость ваших проектов.