Es gibt keine Grenzen und keine Leistungseinbußen. Um zu verstehen, warum, müssen Sie verstehen, wie alle Hooks im WP-Ökosystem gespeichert sind.
Zunächst müssen Sie verstehen, wo und wie alle Hooks gespeichert sind. Alle Hooks für Filter und Aktionen werden in einer globalen Variablen namens " wp_filter
yes yes" gespeichert. Aktions-Hooks werden auch in dieser Variablen gespeichert. Diese Variable ist ein zugeordnetes Array, wobei key der Name der Aktion oder des Filters ist und value ein anderes assoziatives Array ist. Schauen wir uns zum Beispiel die Aktion 'init' an. In dieser Phase sehen wir folgende Struktur:
$wp_filter = array(
'init' => array(...),
);
Dieses Unterarray verfügt über numerische Schlüssel und Werte als Arrays. Zifferntasten sind unsere Prioritäten. Mit Zifferntasten verknüpfte Arrays enthalten eine Liste von Hooks mit derselben Priorität. Wenn wir also anrufen add_action( 'init', 'wpse8170_my_first_init', 20 )
, dann anrufen add_action( 'init', 'wpse8170_my_second_init', 20 )
und schließlich anrufen add_action( 'init', 'wpse8170_my_third_init', 10 )
, sieht unser Beispiel folgendermaßen aus:
$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(...),
),
),
);
Wenn nun eine init
Aktion ausgelöst wird, werden alle Hooks unter Verwendung der ksort
Funktion sortiert und unser Array sieht jetzt so aus:
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(...),
),
),
Und alle Hooks werden in dieser Warteschlange ausgeführt: zuerst 'wpse8170_my_third_init'
, dann 'wpse8170_my_first_init'
und schließlich 'wpse8170_my_second_init'
.
So können Sie sehen, dass es keine Grenzen und Strafen gibt, und Sie können jeden Wert verwenden, der von Ihrer PHP-Umgebung als Schlüssel für das zugehörige Array akzeptiert wird.