Warunkowe if ( isset($wp_filter['all']) ) {
można znaleźć bezpośrednio w tych funkcjach tworzenia haków:
apply_filters
apply_filters_ref_array
do_action
do_action_ref_array
Różnica między nimi polega na liczbie wysłanych argumentów. Albo potrzebujemy wielu argumentów, ref_array
albo jednego argumentu. Inna różnica „akcja vs. filtr” jest prosta, akcja może wykonywać dowolną funkcję / akcję, a nazwa filtru jest zwykle zarezerwowana dla funkcji, które pobierają dane łańcuchowe i zwracają te dane.
OK, w ten sposób tworzysz haczyki. I haki mają nazwy, i możesz łowić wiele nazw funkcji na tej samej nazwie haka (czytaj: tag).
Ale kiedy zdefiniujesz wszystkie funkcje związane z konkretnymi zaczepami, musisz gdzieś zapisać wszystkie nazwy zaczepów i powiązane funkcje. Właśnie dlatego wierzymy global $wp_filter
w WordPress. Jeśli wypiszesz tę zmienną, otrzymasz coś w rodzaju ...
Array
(
[pre_term_name] => Array
(
[10] => Array
(
[sanitize_text_field] => Array
(
[function] => sanitize_text_field
[accepted_args] => 1
)
[wp_filter_kses] => Array
(
[function] => wp_filter_kses
[accepted_args] => 1
)
)
[30] => Array
(
[_wp_specialchars] => Array
(
[function] => _wp_specialchars
[accepted_args] => 1
)
)
)
Cóż, nie spierajmy się o nazwę tej zmiennej. Osobiście nazwałbym to innym, prawdopodobnie, $wp_hooks
ponieważ ta nazwa nie została przyjęta. Jeśli jednak wrócimy do historii, odkryjemy, że do_action
jest odtąd @since 1.2.0
i apply_filters
jest @since 0.71
(wydany 9 czerwca 2003 r.). To daje całkiem dobre wyjaśnienie, dlaczego się nazywa $wp_filter
. Jest to najbardziej prawdopodobne, ponieważ filtry zostały wprowadzone najpierw w WordPress. Później wprowadzili działania.
Opierając się na wypowiedzi z @TheDeadMedic ...
add Działalności („wszystko”, „cokolwiek”) będzie oznaczać pożary dla każdej czynności, niezależnie od nazwy haka.
Podniosłem pytanie, dlaczego potrzebujemy $wp_filter['all']
? Tylko kilka przykładów. Introspekcja, testy i prawdopodobnie więcej wewnętrznych funkcji systemu w przyszłych wersjach WordPress.