Nie ma ograniczeń i kar za wyniki. Aby zrozumieć dlaczego, musisz zrozumieć, w jaki sposób wszystkie haki są przechowywane w ekosystemie WP.
Przede wszystkim musisz zrozumieć, gdzie są przechowywane wszystkie haki i jak to robią. Wszystkie haczyki dla filtrów i akcji są przechowywane w zmiennej globalnej o nazwie wp_filter, tak tak haki akcji są również przechowywane w tej zmiennej. Zmienna ta jest tablicą powiązaną, gdzie klucz jest nazwą akcji lub filtra, a wartość jest inną tablicą asocjacyjną. Na przykład spójrzmy na akcję „init”, na tym etapie zobaczymy następującą strukturę:
$wp_filter = array(
'init' => array(...),
);
Ta podgrupa ma klucze numeryczne i wartości jako tablice. Klawisze numeryczne są naszymi priorytetami. Tablice powiązane z klawiszami numerycznymi zawierają listę haczyków o tym samym priorytecie. Więc jeśli zadzwonimy add_action( 'init', 'wpse8170_my_first_init', 20 ), a następnie zadzwonimy, add_action( 'init', 'wpse8170_my_second_init', 20 )a na końcu zadzwonimy add_action( 'init', 'wpse8170_my_third_init', 10 ), nasz przykład będzie wyglądał następująco:
$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(...),
),
),
);
Teraz po inituruchomieniu akcji wszystkie haki zostaną posortowane przy użyciu ksortfunkcji, a nasza tablica wygląda teraz:
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(...),
),
),
Wszystkie haki zostaną wykonane w tej kolejce: najpierw 'wpse8170_my_third_init', potem 'wpse8170_my_first_init'i na końcu 'wpse8170_my_second_init'.
Możesz więc zobaczyć, że nie ma żadnych ograniczeń i kar, i możesz użyć dowolnej wartości, która jest akceptowana jako klucz do powiązanej tablicy przez twoje środowisko PHP.