Non ci sono limiti né penalità per le prestazioni. Per capire perché, è necessario capire come sono memorizzati tutti gli hook nell'ecosistema WP.
Prima di tutto devi capire dove sono memorizzati tutti gli hook e come lo fanno. Tutti gli hook per filtri e azioni sono memorizzati in una variabile globale chiamata wp_filter
, sì sì anche gli hook di azione sono memorizzati in questa variabile. Questa variabile è un array associato, dove key è il nome dell'azione o del filtro e value è un altro array associativo. Ad esempio diamo un'occhiata all'azione 'init', in questa fase vedremo la seguente struttura:
$wp_filter = array(
'init' => array(...),
);
Questo array secondario ha chiavi e valori numerici come array. I tasti numerici sono le nostre priorità. Le matrici, associate ai tasti numerici, contengono un elenco di hook con la stessa priorità. Quindi, se chiamiamo add_action( 'init', 'wpse8170_my_first_init', 20 )
, quindi chiamiamo add_action( 'init', 'wpse8170_my_second_init', 20 )
e infine chiamiamo add_action( 'init', 'wpse8170_my_third_init', 10 )
, il nostro esempio sarà simile a:
$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(...),
),
),
);
Ora, quando init
viene attivata l'azione, tutti gli hook verranno ordinati in base all'uso della ksort
funzione e il nostro array apparirà ora:
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(...),
),
),
E tutti gli hook verranno eseguiti in questa coda: prima 'wpse8170_my_third_init'
, poi 'wpse8170_my_first_init'
e infine 'wpse8170_my_second_init'
.
Quindi puoi vedere che non ci sono limiti e penalità e puoi usare qualsiasi valore accettabile come chiave per l'array associato dal tuo ambiente PHP.