He buscado una explicación adecuada de la diferencia entre add_filter()
y apply_filters()
aquí, pero no pude encontrarla.
¿Alguien puede decirme qué información o lógica considerar antes de usar add_filter
o apply_filters
en un contexto?
¿Eso hace que el uso de uno sea imperativo y no el otro?
¿Es correcto que
add_filter
solo agrega una función a la cola de funciones que esperan ejecutarse en una variable yapply_filters
ejecuta las funciones en orden?¿También es correcto que
apply_filters
cuando se llama con un argumento (el nombre de la función que se ejecutará) ejecutará esa función antes que todas las demás (si existen) en la cola?
plugins
customization
hanachi
fuente
fuente
Respuestas:
La mayoría de lo siguiente se puede encontrar en el Codex :
apply_filters
En esencia:
Se utiliza
apply_filters
para filtrar un determinado$value
- con respecto al valor en sí, así como variables opcionalmente proporcionados$var_1
a través$var_n
.add_filter
En esencia: se
utiliza
add_filter
para enganchar una función personalizada a la acción de filtro dada ($tag
), que podría haber generadoapply_filters
antes (o fue una acción de filtro incorporada o se deriva de un complemento / su tema).Entonces, aquí hay un ejemplo ficticio :
Ahora, si solo llamamos a nuestra función tal como está, las iniciales se imprimen de izquierda a derecha, porque esto es lo que definimos como comportamiento predeterminado.
La segunda vez, obtenemos las iniciales en orden inverso, porque la función de filtro
__return_true
, que está enganchada a nuestra acción de filtro, siempre regresaTRUE
y, por lo tanto, hace que las iniciales se emitan de derecha a izquierda.fuente