Il n'y a aucune limite et aucune pénalité de performance. Pour comprendre pourquoi, vous devez comprendre comment tous les crochets sont stockés dans l'écosystème WP.
Tout d'abord, vous devez comprendre où sont stockés tous les crochets et comment ils le font. Tous les hooks pour les filtres et les actions sont stockés dans une variable globale appelée wp_filter
, oui oui les hooks d'action sont également stockés dans cette variable. Cette variable est un tableau associé, où clé est le nom de l'action ou du filtre et la valeur est un autre tableau associatif. Par exemple, regardons l'action 'init', à ce stade, nous verrons la structure suivante:
$wp_filter = array(
'init' => array(...),
);
Ce sous-tableau a des clés numériques et des valeurs sous forme de tableaux. Les touches numériques sont nos priorités. Les tableaux, associés à des touches numériques, contiennent une liste de crochets avec la même priorité. Donc, si nous appelons add_action( 'init', 'wpse8170_my_first_init', 20 )
, puis appelons add_action( 'init', 'wpse8170_my_second_init', 20 )
et finalement appelons add_action( 'init', 'wpse8170_my_third_init', 10 )
, notre exemple ressemblera à:
$wp_filter = array(
'init' => array(
20 => array(
'wpse8170_my_first_init' => array(
'accepted_args' => 1, // the number of accepted arguments by your hook
'function' => 'wpse8170_my_first_init', // callback function
),
'wpse8170_my_second_init' => array(...),
),
10 => array(
'wpse8170_my_third_init' => array(...),
),
),
);
Maintenant, lorsque l' init
action est déclenchée, tous les crochets seront triés avec l'utilisation de la ksort
fonction et notre tableau ressemble maintenant:
array(
10 => array(
'wpse8170_my_third_init' => array(...),
),
20 => array(
'wpse8170_my_first_init' => array(
'accepted_args' => 1, // the number of accepted arguments by your hook
'function' => 'wpse8170_my_first_init', // callback function
),
'wpse8170_my_second_init' => array(...),
),
),
Et tous les hooks seront exécutés dans cette file d'attente: d'abord 'wpse8170_my_third_init'
, puis 'wpse8170_my_first_init'
et enfin 'wpse8170_my_second_init'
.
Ainsi, vous pouvez voir qu'il n'y a pas de limites et de pénalités et vous pouvez utiliser n'importe quelle valeur acceptable comme clé pour le tableau associé par votre environnement PHP.