web-dev-qa-db-fra.com

Comment WordPress appelle-t-il les fonctions attachées à un crochet d'action avant d'appeler des fonctions attachées à d'autres crochets?

Nous savons qu'il existe un certain ordre d'exécution des fonctions de rappel attachées aux points d'ancrage d'action.

 enter image description here 

Comment WordPress décide-t-il quelle action doit être priorisée lors de l'exécution de tous les points d'ancrage?

2
IAmDhar

WordPress ne n'exécute pas toutes les actions et tous les filtres (c.-à-d. Crochets) en même temps en utilisant une sorte de priorité; à la place, ordre d'exécution de ces crochets d'action et de filtre est codé en dur dans WordPress PHP fichiers.

Dans le code source CODE de WordPress, recherchez les quatre appels de fonction suivants (à l'aide de la fonction de recherche dans les fichiers de n'importe quel éditeur de texte):

  1. apply_filters => applique un filtre spécifique.

  2. apply_filters_ref_array => applique un filtre spécifique en spécifiant des arguments dans un tableau.

  3. do_action => effectue une action spécifique.

  4. do_action_ref_array => effectue une action spécifique en spécifiant des arguments dans un tableau.

Vous verrez que chacun des appels de fonction ci-dessus est utilisé plusieurs fois dans le code source WordPress CODE et l'ordre d'exécution (priorité) de l'action correspondante et le point d'ancrage du filtre dépend du moment où WordPress effectue ces appels de fonction.

Comme PHP lui-même exécute CODE ligne par ligne, l'ordre d'exécution de ces fonctions et leurs points d'ancrage correspondants dépendent également du fichier PHP et de la ligne de ces appels de fonction.

Remarque: Bien que l'ordre d'exécution de chaque action et filtre spécifique soit déterminé au préalable dans le CODE, l'ordre d'exécution pour l'utilisation multiple d'un même lien est déterminé par le paramètre $ priority .

WordPress code ces appels de fonction pour s’assurer que l’ordre d’exécution de ces crochets action et filtre est prédéterminé. Sinon, les développeurs auraient du mal à coder les thèmes et les plugins.

Note: Depuis la version 4.7, WordPress implémente les quatre fonctions ci-dessus de manière interne en utilisant WP_Hook class. Donc, vous pouvez aussi jeter un coup d'œil à cette classe pour comprendre comment tout cela se fait en interne.

2
Fayaz

L'ordre est déterminé dans, ainsi, comment WordPress est codé. Si vous essayez de changer la séquence d'exécution de l'action, vous devrez éditer les fichiers principaux de WordPress (et casser un lot des objets).

Si vous essayez de vous assurer que certaines choses sont exécutées avant toute chose, vous pouvez simplement changer la manière dont vous accrochez les actions de WordPress.

N'oubliez pas que certaines fonctions WordPress (telles que is_single(), is_home(), etc.) ne fonctionneront qu'après l'exécution de points d'ancrage WordPress spécifiques.

Vous trouverez de plus amples informations à ce sujet: Comment obtenir la séquence d’exécution des connexions de WordPress?

1
ricotheque
1
Faysal Mahamud

Chaque fois qu'un rappel est ajouté à un point d'ancrage (action ou filtre), il est ajouté avec une priorité. Si aucune priorité n'est spécifiée, la valeur par défaut de 10 est utilisée.

//* Add action to init at priority 4
add_action( 'init', 'wpse_262184_init', 4 );

Pour chaque hook déclenché, les callbacks sont exécutés en ordre croissant ou en priorité (les numéros les plus bas en premier). Si deux rappels ont la même priorité, ils sont exécutés dans l'ordre dans lequel ils ont été ajoutés au hook.

0
Nathan Johnson