O que é “tudo” em isset ($ wp_filter ['all'])

10

Sou novato no WordPress. Estou tentando entender como isso gera as páginas XHTML. Eu acho que é a função de do_action( 'hook-name' ) , mas eu estou preso com a compreensão da instrução isset( $wp_filter['all] ) ao ler a função do_action porque eu não entendo qual é o significado da palavra all .

É um recurso PHP ou WordPress?

    
por nguyen mc 13.05.2016 / 19:03

2 respostas

8

all é apenas uma string que os desenvolvedores do WordPress escolheram para se comportar de maneira diferente de qualquer outro gancho. Quando você anexar a all , seu retorno de chamada será disparado para todos os outros ganchos .

Eu não gastaria muito tempo olhando para a fonte de do_action , apenas saiba que:

  1. add_action( 'x', 'whatever' ) significa que whatever é acionado por do_action( 'x' )
  2. add_action( 'all', 'whatever' ) significa que whatever é acionado para a cada do_action , independentemente do nome do gancho.
por TheDeadMedic 13.05.2016 / 19:18
5

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.

    
por prosti 13.05.2016 / 20:41

Tags