Хуки в WordPress это довольно интересная тема для обсуждения. Что делают хуки? Давайте сначала разберемся для чего они нужны и какую функцию выполняют. Хук в переводе с английского это крюк на который как бы цепляется некоторая пользовательская функция в WordPress. Хуками являются так называемые фильтры и события. Фильтры и события работают практически одинаково разница определяется только лишь логикой их использования.
Вот о них мы сегодня и поговорим.
Как работают хуки в WordPress?
У некоторых функций WordPress есть хуки то есть события. Например если взять основные функции WordPress, такие как: wp_head.php, wp_content.php, wp_footer.php. У этих функций есть так называемые ( хук событие ).
С помощью хуков в WordPress мы можем как бы цепляться за определенные события происходящие во время загрузки сайта. Цеплять можно собственные функции совершать как бы (перехват).
Таким образом добавлять или удалять какие то элементы дизайна сайта, делать проверку и возвращать данные обратно, добавлять дополнительный функционал сайту и многое другое.
Хуки как фильтры и события в WordPress
Что такое фильтры и события, скажете вы? На первый взгляд кажется, что для понимания, это сложно но это не так. И мы в этом сегодня разберемся. Функции add_filter() и add_action() как раз и работают с (хук событиями).
Работают функции совершенно одинаково. Разница заключается только в логике работы. Фильтры перехватывают события выполняют какие либо действия и возвращают его назад. События же работаю также, только выполняют определенное действие но ни чего не возвращают.
Примеры работы (хуков фильтров) в WordPress
Для работы с фильтрами существуют две функции:
add_filters($hook_name, $function, $priority, $args_num); прикрепляет пользовательскую функцию к (хуку фильтру) и использует четыре параметра ($hook_name, $function, $priority и $args_num).
$hook_name(строка) (обязательный) Имя хука события, для которого срабатывает функция в параметре $function_to_add.
$function(строка) (обязательный) Имя функции, которая срабатывает для указанного в параметре (хука фильтра). Имя указывается в виде строки в кавычках: название_функции
. Для функций внутри классов указывается массив: array(название_класса, название_функции)
.
$priority(число) Приоритет функций для одного и тоже (хука фильтра). Чем больше число, тем позднее будет выполнятся функция. Функции с одинаковым приоритетом, выполняются в порядке добавления их к массиву.
$args_num(число) Количество аргументов передаваемых фильтром функции. Некоторые фильтры могут передавать больше чем 1 аргумент.
apply_filter($hook_name, $value, $args); выполняет пользовательскую функцию через (хук фильтр) и использует параметры ($hook_name, $value, $args).
$hook_name(строка) (обязательный) Имя (хук фильтра).
$value(строка/массив/число/объект/логический) (обязательный) Значение, которое передается функции в первом её аргументе. Другими словами — значение, которое необходимо отфильтровать.
$args(строка/массив/число/объект/логический) Дополнительные значения, которые будут передаваться функции.
Рассмотрим пример работы фильтров по небольшим кусочкам кода для более легкого понимания.
Данный пример показывает как с помощью фильтра можно изменить данные основной функции за ее пределами.
Изначально текст был таким: Есть много различных определений, что такое гений. В тексте в слове (много) были html — теги выделения жирным. После работы фильтра мы получим следующий текст: Есть много различных определен… Произошло то, что после работы основной функции которая удаляет html теги сработал наш фильтр и обрезал текст. Таким образом с помощью (хука фильтра) мы добавили функциональности основной функции разобранной в примере.
Примеры работы (хуков событий) в WordPress
Работа с событиями осуществляется двумя основными функциями:
add_action($hook_name, $function, $priority, $args_num); прикрепляет пользовательскую функцию к хуку — событию и использует четыре параметра ($hook_name, $function, $priority и $args_num).
add_action($hook_name, $function, $priority, $args_num); прикрепляет пользовательскую функцию к (хуку событию) и использует четыре параметра ($hook_name, $function, $priority и $args_num).
$hook_mame(строка) (обязательный) Имя (хука действия), к которому будет цепляться функция.
$function(строка/замыкание) (обязательный) Имя функции, которая должна быть вызвана во время срабатывания события.
$priority(число) Приоритетное выполнение функции. На хук может быть прицеплено до нескольких функций. Приоритетность функций решает последовательность их выполнения. Чем меньше число тем раньше выполняется функция.
$args_num(число) Количество аргументов, которые принимает функция.
do_action($hook_name,$args); выполняет пользовательскую функцию через (хук событие) и использует два параметра ($hook_name и $args).
$hook_name(строка) (обязательный) Имя созданного хука.
$args(строка/массив/число/объект/логический) Аргумент, который будет передан функции. Функции можно передавать бесконечное количество аргументов…
Рассмотрим некоторый пример работы события для общего понимания. Предложенный вам пример наглядно показывает работу (хук события).
Предложенный вам пример наглядно показывает работу (хук события). Здесь вы можете видеть функцию которая выводит надпись Привет Мир!, привязку этой функцию к созданному (хуку событию) и ее выполнение.
После срабатывания (хука события) мы получим выведенную надпись: Привет Мир!
Таким образом вы сами сможете использовать свои функции прикреплять к определенным событиям и выводить различные данные.
Как удалить созданные (хуки фильтры) и (хуки события)
Для удаления хуков фильтров и событий нужно использовать две основные функции remove_filter() и remove_action(). Они работают абсолютно одинаково и разница у них заключается лишь в логике применения также как у фильтров и событий.
Параметры функций удаления (хука события) и (хука фильтра)
Как было сказано ранее, функции работают абсолютно одинаково поэтому и параметры у функций совершенно одинаковые.
Ниже вы можете видеть параметры двух функций remove_filter() и remove_action().
Здесь показаны функции с указанием размещения параметров и описание самих параметров.
remove_filter( $hook_name, $function_name, $priority, $args ); remove_action( $hook_name, $function_name, $priority, $args );
$hook_name(строка) (обязательный) Имя фильтра, функцию которого нужно будет удалить.
$function_name(строка) (обязательный) Имя функции, которая должна быть удалена.
$priority(число) Приоритет хука (функции), который был установлен во время добавления.
По умолчанию: 10
$args(удален)
Примеры удаления (хука события)
К примеру вы выводите некоторую надпись удалив при этом из текста html теги где то на сайте и захотели её удалить, то при этом нужно сделать как показано на скриншоте.
Так как при привязке функции к хуку создается массив (хуков событий). Из этого массива вы и удаляете (хук событие) с помощью функции remove_action() также как и remove_filter().
Мы с вами разобрались, что такое хуки, рассмотрели работу с фильтрами, событиями и узнали как удалять хуки. Надеюсь предложенный материал будет вам полезен.
Если появятся вопросы, пишите их в комментариях и не забывайте ставить палец вверх если статья вам понравилась, подписываться на RSS — ленту блога и мой канал на Яндекс.Дзен, чтобы не пропустить новые мои статьи.