Самое время вспомнить хуки, описываемые в предыдущей главе. Хуки могут применяться не только в темах, но и в плагинах. Насколько вы помните, хуки служат для добавления к темам новых полезных функциональных возможностей.
Функции, используемые в плагинах, обычно прицепляются к одному из хуков. Рассмотрим в качестве примера add_action:
add_action ('hook-name', 'function-name', X, Y );
В качестве параметра ‘hook-name’ указывается название хука, к которому будет привязано определенное действие. Функция, отвечающая за реализацию этого действия, представлена во втором параметре, ‘function-name’. Необязательный параметр X, являющийся целым числом (как, впрочем, и Y), отвечает за сортировку действий, добавленных к одному и тому же хуку. По умолчанию X=10. Чем меньше число X, тем раньше будет выполнена та или иная функция.
Параметр Y определяет количество аргументов, которое может принимать функция (по умолчанию 1). Обычно два последних параметра опускаются, ибо их использование обусловлено лишь самыми нетипичными ситуациями.
Ну и, наконец, небольшой пример, чтобы суммировать все вышесказанное:
add_action ('wp_head', 'smashing-shortcode');
К хуку wp_head привязывается функция smashing-shortcode. Ничего сложного.
Аналогичным образом работают и фильтры, за единственным исключением: вместо add_action() необходимо будет использовать add_filter(). Параметры и способы их передачи остаются теми же самыми. В пределах add_filter() можно использовать только хуки фильтров.
Наконец, мы подошли к важному различию между хуками. Хуки действий (action hooks) срабатывают при возникновении какого-либо события, к примеру, в момент публикации записи (хук publish_post()). Хуки фильтров, или просто фильтры, в отличие от хуков действий, пропускают через себя определенные данные, для того чтобы выполнить с ними какие-либо действия.
Добавление новых возможностей это, конечно, хорошо, однако как быть с удалением ненужной функциональности? Делается это просто: при помощи remove_action():
remove_action('action-hook','the-function')
Аналогично для remove_filter().
С помощью этих инструкций можно удалять как собственноручно добавленные возможности, так и стандартные, входящие в ядро WordPress. Некоторые плагины создаются только для того, чтобы ограничить имеющуюся функциональность, и в этом плане без remove_filter() и remove_action() не обойтись.