Я искал подходящее объяснение разницы между add_filter()
и apply_filters()
здесь, но не смог найти.
Может кто-нибудь сказать мне, какую информацию или логику следует учитывать перед использованием add_filter
или apply_filters
в одном контексте.
Что делает использование одного обязательным, а не другого?
Правильно ли, что
add_filter
просто добавляет функцию в очередь функций, ожидающих выполнения над переменной, иapply_filters
выполняет функции по порядку?Также правильно, что
apply_filters
при вызове с аргументом (именем функции, которую нужно запустить) эта функция будет выполняться раньше всех остальных (если они существуют) в очереди?
plugins
customization
hanachi
источник
источник
Ответы:
Большинство из следующего можно найти в Кодексе :
apply_filters
В сущности:
используется
apply_filters
для фильтрации данность$value
- по отношению к самому значению, а также при необходимости предусмотренных переменных$var_1
через$var_n
.add_filter
По сути:
вы используете
add_filter
для привязки пользовательской функции к заданному действию фильтра ($tag
), которое вы могли сгенерироватьapply_filters
ранее (или это было встроенное действие фильтра или проистекающее из плагина / вашей темы).Итак, вот вымышленный пример:
Теперь, если мы просто вызываем нашу функцию как есть, инициалы печатаются слева направо, потому что это то, что мы определили как поведение по умолчанию.
Во второй раз мы получаем инициалы в обратном порядке - потому что функция фильтра
__return_true
, которая подключена к нашему действию фильтра, всегда возвращаетTRUE
и, таким образом, выводит инициалы справа налево.источник