Плагины WordPress взаимодействуют с основным кодом с помощью хуков (крючков). Существует два разных типа хуков WordPress:
- Хуки действий (экшенов) — добавление или удаление функций
- Хуки фильтров — изменяют данные, созданные функциями
На английском языке в руководствах они называются Action hooks (действия) и Filter hooks (фильтры). В дальнейшем мы часто будем использовать эти два слова - экшены и фильтры.
Хуки - это способ для одного куска кода взаимодействовать/модифицировать другой кусок кода в специфических, предопределенных точках. Они составляют основу того, как плагины и темы взаимодействуют с ядром WordPress (Core), но они также широко используются самим ядром.
Есть два типа хуков: Действия (Actions) и Фильтры (Filters). Чтобы использовать любой из них, вам нужно написать пользовательскую функцию, известную как Callback, а затем зарегистрировать ее с помощью хука WordPress для конкретного действия или фильтра.
Callback-функции - это Функции обратного вызова.
Действия (Actions) позволяют добавлять данные или изменять работу WordPress. Функции обратного вызова для Actions будут выполняться в определенных точках при выполнении WordPress, и могут выполнять какие-то задачи, например, выводить данные пользователю или вставлять что-то в базу данных. Экшены не возвращают ничего обратно в вызывающий хук.
Фильтры (Filters) дают возможность изменять данные во время выполнения WordPress. Функции обратного вызова для Фильтров будут принимать переменную, изменять ее и возвращать. Они предназначены для изолированной работы и никогда не должны иметь побочных эффектов, таких как воздействие на глобальные переменные и вывод. Фильтры ожидают, что к ним что-то вернется.
Экшены против Фильтров
Основное различие между действием и фильтром можно резюмировать следующим образом:
- действие принимает информацию, которую получает, что-то делает с ней, и ничего не возвращает. Другими словами: он действует на что-то, а затем выходит, ничего не возвращая обратно на вызывающий хук.
- фильтр принимает полученную информацию, как-то модифицирует ее и возвращает. Другими словами: он фильтрует что-то и передает это обратно на хук для дальнейшего использования.
Другими словами:
- действие прерывает поток кода, чтобы что-то сделать, а затем возвращается в нормальный поток, ничего не изменяя;
- фильтр используется для модификации чего-либо определенным образом, так что модификация затем используется кодом.
"Что-то" - это список параметров, посылаемый через определение хука. Подробнее об этом в следующих разделах.