Szukałem odpowiedniego wyjaśnienia różnicy między add_filter()
i apply_filters()
tutaj, ale nie mogłem znaleźć.
Czy ktoś może mi powiedzieć, jakie informacje lub logikę wziąć pod uwagę przed użyciem add_filter
lub apply_filters
w jednym kontekście.
Czyli korzystanie z jednego imperatywu, a nie drugiego?
Czy to prawda, że
add_filter
po prostu dodaje funkcję do kolejki funkcji oczekujących na wykonanie na zmiennej iapply_filters
wykonuje funkcje w kolejności?Czy prawdą jest również to, że
apply_filters
wywołany argumentem (nazwą funkcji do uruchomienia) wykona tę funkcję przed wszystkimi innymi (jeśli istnieją) w kolejce?
plugins
customization
Hanachi
źródło
źródło
Odpowiedzi:
Większość następujących elementów można znaleźć w Kodeksie :
apply_filters
W istocie:
użyć
apply_filters
, aby filtrować dane$value
- w odniesieniu do samej wartości, jak również ewentualnie przewidzianych zmiennych$var_1
poprzez$var_n
.add_filter
Zasadniczo:
używasz
add_filter
funkcji niestandardowej do podanej akcji filtrującej ($tag
), którą mogłeś wcześniej wygenerowaćapply_filters
(lub była to wbudowana akcja filtrująca lub wynika z wtyczki / twojego motywu).Oto fikcyjny przykład:
Teraz, jeśli po prostu wywołamy naszą funkcję taką, jaka jest, inicjały są drukowane od lewej do prawej - ponieważ to właśnie zdefiniowaliśmy jako zachowanie domyślne.
Za drugim razem otrzymujemy inicjały w odwrotnej kolejności - ponieważ funkcja filtru
__return_true
, która jest dołączona do naszej akcji filtrowania, zawsze powraca,TRUE
a tym samym sprawia, że inicjały są wysyłane od prawej do lewej.źródło