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

10

Je suis un novice dans WordPress. J'essaie de comprendre comment cela génère les pages XHTML. Je suppose que c’est la fonction de do_action( 'hook-name' ) , mais je ne comprends pas bien l’instruction isset( $wp_filter['all] ) lors de la lecture de la fonction do_action car je ne comprends pas quelle est la signification du mot all .

S'agit-il d'une fonctionnalité PHP ou WordPress?

    
posée nguyen mc 13.05.2016 - 19:03

2 réponses

8

all est simplement une chaîne que les développeurs WordPress ont choisie pour se comporter différemment des autres points d'ancrage. Lorsque vous vous connectez à all , votre rappel est déclenché pour tous les autres hooks .

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

  1. add_action( 'x', 'whatever' ) signifiera whatever se déclenche pour do_action( 'x' )
  2. add_action( 'all', 'whatever' ) signifiera que whatever se déclenche pour chaque do_action , quel que soit le nom du hook.
réponse donnée TheDeadMedic 13.05.2016 - 19:18
5

Vous pouvez trouver le code conditionnel if ( isset($wp_filter['all']) ) { dans ces fonctions de création de points d'ancrage:

  • 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, donc ref_array , soit d’un seul argument. L’autre différence "action par rapport au filtre" est simple, l’action peut remplir 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 renvoient les données filtrées.

OK, voici comment vous créez des hooks. Et les hooks ont des noms, et vous pouvez utiliser plusieurs noms de fonction sur le même nom de hook (read: tag).

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 hooks et les noms de fonction associés. C'est pourquoi nous avons le global $wp_filter dans WordPress. Si vous sortez 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 l'appellerais différent, probable $wp_hooks puisque ce nom n'est pas pris. Cependant, si nous revenons dans l'historique, nous trouverons do_action is puisque @since 1.2.0 et apply_filters est @since 0.71 (publié le 9 juin 2003). Cela vous explique assez bien pourquoi on l'appelle $wp_filter . Cela est probablement dû au fait que les filtres ont été introduits d’abord dans WordPress. Plus tard, ils ont introduit des actions.

Il suffit de s'appuyer sur @TheDeadMedic ...

  

add_action ('all', 'peu importe') signifiera ce qui se déclenche pour chaque action do, quel que soit le nom du hook.

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

    
réponse donnée prosti 13.05.2016 - 20:41

Lire d'autres questions sur les étiquettes