O que é "tudo" no isset ($ wp_filter ['all'])

10

Eu sou um 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 estou preso ao entendimento da instrução isset( $wp_filter['all] )ao ler a função do_action porque não entendo qual é o significado da palavra all.

É um recurso PHP ou WordPress?

nguyen mc
fonte

Respostas:

9

allé apenas uma sequência escolhida pelos desenvolvedores do WordPress para se comportar de maneira diferente de qualquer outro gancho. Quando você se conecta a all, seu retorno de chamada é acionado para todos os outros ganchos .

Eu não gastaria muito tempo olhando a fonte do_action, apenas sei que:

  1. add_action( 'x', 'whatever' )significará whateverincêndios parado_action( 'x' )
  2. add_action( 'all', 'whatever' )significará whateverincêndios para todos do_action , independentemente do nome do gancho.
TheDeadMedic
fonte
5

Condicional, if ( isset($wp_filter['all']) ) {você pode encontrar neste gancho funções de criação:

  • apply_filters
  • apply_filters_ref_array
  • do_action
  • do_action_ref_array

A diferença entre eles está no número de argumentos enviados. Precisamos de vários argumentos, portanto, ref_arrayou de um argumento. A outra diferença "ação versus filtro" é simples, a ação pode executar qualquer função / ação e o nome do filtro geralmente é reservado para funções que pegam dados da string e retornam esses dados filtrados.

OK, é assim que você cria ganchos. E os ganchos têm nomes e você pode pescar vários nomes de funções no mesmo nome de gancho (leia-se: tag).

insira a descrição da imagem aqui

Porém, depois de definir todas as funções associadas a ganchos específicos, é necessário armazenar em algum lugar todos os nomes de ganchos e nomes de funções associados. É por isso que temos o global $wp_filterWordPress. Se você produzir essa variável, obterá 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 diria que é diferente, provável, $wp_hooksjá que esse nome não é usado. No entanto, se voltarmos à história, descobriremos que do_actioné desde @since 1.2.0e apply_filtersé @since 0.71(lançado em 9 de junho de 2003.). Isso dá uma boa explicação para o motivo de ser chamado $wp_filter. É mais provável porque os filtros foram introduzidos primeiro no WordPress. Mais tarde, eles introduziram ações.

Apenas construindo sobre ser dito a partir de @ TheDeadMedic ...

add_action ('all', 'Whatever') significará o que for acionado para cada do_action, independentemente do nome do gancho.

Eu levantei a pergunta por que precisamos $wp_filter['all']? Apenas alguns exemplos. Introspecção, testes e provavelmente mais recursos internos do sistema nas futuras versões do WordPress.

prosti
fonte