Qu'est-ce que «tous» dans isset ($ wp_filter ['all'])

10

Je suis novice dans WordPress. J'essaie de comprendre comment il génère les pages XHTML. Je suppose que c'est la fonction de do_action( 'hook-name' ), mais je suis coincé avec la compréhension de l'instruction isset( $wp_filter['all] )lors de la lecture de la fonction do_action parce que je ne comprends pas quel est le sens du mot all.

Est-ce une fonctionnalité PHP ou WordPress?

nguyen mc
la source

Réponses:

9

alln'est qu'une chaîne choisie par les développeurs WordPress pour se comporter différemment de tout autre crochet. Lorsque vous vous connectez à all, votre rappel se déclenchera pour tous les autres hooks .

Je ne passerais pas trop de temps à regarder la source de do_action, sachez juste que:

  1. add_action( 'x', 'whatever' )signifiera des whateverincendies pourdo_action( 'x' )
  2. add_action( 'all', 'whatever' )signifie des whateverincendies pour tous do_action , quel que soit le nom du crochet.
TheDeadMedic
la source
5

Conditionnel, if ( isset($wp_filter['all']) ) {vous pouvez trouver directement dans ces fonctions de création de hook:

  • apply_filters
  • apply_filters_ref_array
  • do_action
  • do_action_ref_array

La différence entre ceux-ci réside dans le nombre d'arguments envoyés. Soit nous avons besoin de plusieurs arguments, ref_arraysoit d'un seul argument. L'autre différence "action vs filtre" est simple, l'action peut faire n'importe quelle fonction / action, et le nom du filtre est généralement réservé aux fonctions qui prennent des données de chaîne et retournent ces données filtrées.

OK, voici comment créer des crochets. Et les hooks ont des noms, et vous pouvez pêcher plusieurs noms de fonction sur le même nom de hook (lire: tag).

entrez la description de l'image ici

Mais une fois que vous avez défini toutes les fonctions associées à des hooks spécifiques, vous devez stocker quelque part tous les noms de hook et les noms de fonction associés. C'est pourquoi nous utilisons le global $wp_filterdans WordPress. Si vous produisez cette variable, vous obtiendrez quelque chose comme ...

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
                        )

                )

        )

Eh bien, ne discutons pas du nom de cette variable. Personnellement, je dirais que c'est différent, probable $wp_hookspuisque ce nom n'est pas pris. Cependant, si nous revenons dans l'histoire, nous trouverons que do_actionc'est depuis @since 1.2.0et apply_filtersest @since 0.71(publié le 9 juin 2003). Cela vous donne une assez bonne explication de la raison de son appel $wp_filter. C'est probablement parce que les filtres ont été introduits en premier dans WordPress. Plus tard, ils ont introduit des actions.

S'appuyant simplement sur les propos de @TheDeadMedic ...

add_action ('all', 'any') signifiera tout ce qui se déclenche pour chaque do_action, quel que soit le nom du hook.

J'ai soulevé la question pourquoi avons-nous besoin $wp_filter['all']? Juste quelques exemples. Introspection, tests et probablement plus de fonctionnalités internes du système dans les futures versions de WordPress.

prosti
la source