Conditional if ( isset($wp_filter['all']) ) {
você pode encontrar nessas funções de criação de gancho:
-
apply_filters
-
apply_filters_ref_array
-
do_action
-
do_action_ref_array
A diferença entre estes está no número de argumentos enviados. Ou precisamos de vários argumentos, portanto, ref_array
ou argumento único. A outra diferença "ação vs. filtro" é simples, a ação pode executar qualquer função / ação e o nome do filtro é normalmente reservado para funções que usam dados de string e retornam os dados filtrados.
OK, é assim que você cria ganchos. E ganchos têm nomes, e você pode pescar vários nomes de função no mesmo nome de hook (read: tag).
Mas depois de definir todas as funções associadas a ganchos específicos, você precisa armazenar em algum lugar todos os nomes de ganchos e nomes de funções associados. É por isso que temos o global $wp_filter
no WordPress. Se você produzir essa variável, você terá 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
)
)
)
Bem, não vamos discutir o nome dessa variável. Pessoalmente, eu chamaria de diferente, provável $wp_hooks
desde que esse nome não foi escolhido. No entanto, se voltarmos ao histórico, encontraremos do_action
como @since 1.2.0
e apply_filters
é @since 0.71
(lançado em 9 de junho de 2003.). Isso lhe dá uma boa explicação porque é chamado de $wp_filter
. É mais provável porque os filtros foram introduzidos primeiro no WordPress. Mais tarde, eles introduziram ações.
Apenas construindo sobre ser dito de @TheDeadMedic ...
add_action ('all', 'whatever') significará os disparos para cada do_action, independentemente do nome do hook.
Eu levantei a questão por que precisamos de $wp_filter['all']
? Apenas alguns exemplos. Introspecção, testes e provavelmente mais recursos internos do sistema nas futuras versões do WordPress.