Condicional if ( isset($wp_filter['all']) ) {
que puede encontrar directamente en estas funciones de creación de ganchos:
-
apply_filters
-
apply_filters_ref_array
-
do_action
-
do_action_ref_array
La diferencia entre estos está en el número de argumentos enviados. O bien necesitamos varios argumentos, por lo tanto, ref_array
o un solo argumento. La otra diferencia "acción contra filtro" es simple, la acción puede realizar cualquier función / acción, y el nombre del filtro generalmente se reserva para las funciones que toman datos de cadenas y devuelven los datos filtrados.
Bien, estas son las formas de crear ganchos. Y los enganches tienen nombres, y puedes capturar múltiples nombres de funciones en el mismo nombre de enganche (leer: etiqueta).
Pero una vez que define todas las funciones asociadas con ganchos específicos, debe almacenar en algún lugar todos los nombres de ganchos y nombres de funciones asociadas. Es por esto que tenemos el global $wp_filter
en WordPress. Si genera esa variable obtendrá algo como ...
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
)
)
)
Bueno, no discutamos sobre el nombre de esta variable. Personalmente, lo llamaría diferente, probable $wp_hooks
, ya que este nombre no se toma. Sin embargo, si volvemos al historial, encontraremos que do_action
es ya que @since 1.2.0
y apply_filters
es @since 0.71
(publicado el 9 de junio de 2003). Eso te da una buena explicación de por qué se llama $wp_filter
. Es más probable porque los filtros se introdujeron primero en WordPress. Más tarde introdujeron acciones.
Basándonos en lo que dice @TheDeadMedic ...
add_action ('todo', 'lo que sea') significará lo que se dispare por cada acción_, independientemente del nombre del gancho.
Me planteé la pregunta ¿por qué necesitamos $wp_filter['all']
? Sólo algunos ejemplos. Introspección, pruebas y probablemente más características internas del sistema en las futuras versiones de WordPress.