it-swarm.com.de

Wie ruft WordPress Funktionen auf, die an einen bestimmten Aktions-Hook angehängt sind, bevor Funktionen aufgerufen werden, die an andere Hooks angehängt sind?

Wir wissen, dass es eine bestimmte Reihenfolge für die Ausführung von Callback-Funktionen gibt, die mit Aktions-Hooks verknüpft sind.

 enter image description here 

Wie entscheidet WordPress, welche Aktion beim Ausführen aller Hooks priorisiert werden soll?

2
IAmDhar

WordPress führt nicht alle Aktionen und Filter (dh Hooks) gleichzeitig mit einer bestimmten Priorität aus. Stattdessen ist die Ausführungsreihenfolge dieser Aktionen und Filter-Hooks in WordPress core _ fest codiert.PHP files .

Suchen Sie in WordPress-Quellcode nach den folgenden vier Funktionsaufrufen (mit der Funktion "In Dateien suchen" eines beliebigen Texteditors):

  1. apply_filters => wendet einen bestimmten Filter an.

  2. apply_filters_ref_array => wendet einen bestimmten Filter an und gibt Argumente in einem Array an.

  3. do_action => führt eine bestimmte Aktion aus.

  4. do_action_ref_array => führt eine bestimmte Aktion aus und gibt Argumente in einem Array an.

Sie werden sehen, dass jeder der obigen Funktionsaufrufe mehrmals innerhalb des WordPress-Quellcodes verwendet wird und die Ausführungsreihenfolge (Priorität) der entsprechenden Aktion und des Filter-Hooks davon abhängt, wann WordPress diese Funktionsaufrufe durchführt.

Da PHP selbst CODE zeilenweise ausführt, hängt die Ausführungsreihenfolge dieser Funktionen und der zugehörigen Hooks auch davon ab, welche PHP -Datei und in welcher Zeile sich diese Funktionsaufrufe befinden.

Hinweis:Obwohl die Ausführungsreihenfolge der einzelnen Aktions- und Filter-Hooks im CODE festgelegt ist, wird die Ausführungsreihenfolge für die Mehrfachverwendung eines einzelnen Hooks durch die Priorität $ bestimmt parameter.

WordPress codiert diese Funktionsaufrufe hart, um sicherzustellen, dass die Ausführungsreihenfolge dieser Aktions- und Filter-Hooks vorbestimmt ist. Andernfalls hätten Entwickler Probleme beim Codieren von Themes und Plugins.

Hinweis:Seit 4.7 implementiert WordPress alle oben genannten vier Funktionen intern mit WP_Hook class. Sie können sich also auch diese Klasse ansehen, um zu verstehen, wie all dies intern durchgeführt wird.

2
Fayaz

Die Reihenfolge hängt davon ab, wie WordPress codiert ist. Wenn Sie versuchen, die Ausführungsreihenfolge der Aktion zu ändern, müssen Sie die WordPress-Kerndateien bearbeiten (und ein lot of things brechen).

Wenn Sie sicherstellen möchten, dass bestimmte Dinge ausgeführt werden, bevor Sie etwas anderes tun, können Sie einfach ändern, wie Sie sich in die Aktionen von WordPress einbinden.

Beachten Sie, dass bestimmte WordPress-Funktionen (wie is_single(), is_home() usw.) nur funktionieren, nachdem bestimmte WordPress-Hooks ausgeführt wurden.

Viele weitere Informationen finden Sie hier: Wie bekomme ich die Hook-Run-Sequenz von WordPress?

1
ricotheque
1
Faysal Mahamud

Jedes Mal, wenn einem Hook ein Rückruf hinzugefügt wird (entweder eine Aktion oder ein Filter), wird dieser mit einer Priorität hinzugefügt. Wenn keine Priorität angegeben ist, wird der Standardwert 10 verwendet.

//* Add action to init at priority 4
add_action( 'init', 'wpse_262184_init', 4 );

Für jeden Haken, der ausgelöst wird, werden die Rückrufe in aufsteigender Reihenfolge oder Priorität ausgeführt (niedrigere Nummern zuerst). Wenn zwei Rückrufe dieselbe Priorität haben, werden sie in der Reihenfolge ausgeführt, in der sie dem Hook hinzugefügt wurden.

0
Nathan Johnson