web-dev-qa-db-fra.com

Quel rappel de hook est prioritaire si le plugin et le thème utilisent le même hook?

Si un thème et un plug-in utilisent le même crochet d'action, par exemple, comment_form est utilisé à la fois par le thème et par le plug-in. Alors, lequel sera appelé en premier? la fonction associée au hook du thème ou la fonction associée au hook du plugin.

1
Adi

Un hook d’action est simplement un point de file d’attente qui agit en un point spécifique du PHP processus d'exécution : les rappels sont mis en file d'attente via l'appel add_action(), et tout le contenu de la file d'attente est traité à son tour:

add_action( 'hook_name', 'callback_name', $priority, $number_of_args );

Un hook de filtre est un point de file d'attente similaire , mais il agit uniquement sur un bit de données spécifique - cela pourrait être une chaîne, un tableau, un entier ou autre chose. Comme pour les actions, les rappels sont mis en file d'attente via l'appel add_filter() et tout le contenu de la file d'attente est traité à son tour.

add_filter( 'hook_name', 'callback_name', $priority, $number_of_args );

Si vous devez vous assurer qu'un rappel est traité plus tôt ou plus tard, vous devez vous assurer que les deux rappels ont des priorités différentes . Le inférieur le nombre, le supérieur la priorité et le plus tôt l'exécution. La priorité par défaut est 10. Ainsi, tout élément ajouté avec une priorité 11 sera exécuté après la valeur par défaut et tout élément ajouté avec une priorité 9 sera exécuté avant la valeur par défaut.

Donc, oui: les plugins Theme et peuvent ajouter des rappels d'action ou de filtrage au même hook action/filtrage, sans conflit.

4
Chip Bennett

Chaque crochet action/filter a un paramètre de priorité ( le troisième paramètre ). La valeur par défaut est 10, plus la valeur est petite, plus tôt on l'appelle

Comme

add_action( $tag, $function_to_add, $priority, $accepted_args );

add_filter( $tag, $function_to_add, $priority, $accepted_args );

1
Maruti Mohanty