Verwenden Sie wp init hook, um andere Hooks aufzurufen?

Ich möchte wissen, ob es eine gute Übung nach WordPress Theme oder Plugin-Entwicklung ist.

add_action('init','all_my_hooks'); function all_my_hooks(){ // some initialization stuff here and then add_action('admin_init',-----); add_action('admin_menu',----); // more like so } 

Vielen Dank

Solutions Collecting From Web of "Verwenden Sie wp init hook, um andere Hooks aufzurufen?"

Im Allgemeinen: Ja, warten Sie auf einen dedizierten Hook, um Ihren eigenen Code zu starten. Werfen Sie niemals eine Objektinstanz in den globalen Namespace. Aber init ist selten notwendig.

Du hebst so spät wie möglich ein. Wenn Ihr erster Code auf wp_head Sie keinen früheren Hook. Sie können sogar Haken kaskadieren :

 add_action( 'wp_head', 'first_callback' ); function first_callback() { // do something // then add_action( 'wp_footer', 'second_callback' ); } 

Bezüglich des init wp_loaded : Benutze stattdessen wp_loaded . Das wird nach dem ms_site_check() init und nach dem ms_site_check() . Auf diese Weise verhindern Sie, dass Ihr Plugin auf einer ungültigen Untersite in einer Installation mit mehreren Standorten ausgeführt wird. Alles andere ist gleich.

Ich sehe aus diesen Gründen nicht die großen Vorteile dieser Praxis:

Ihre callbackfunktionen werden bei der Registrierung nicht aufgerufen

Die functionen add_action und add_filter fügen der globalen Variablen $wp_filter nur einen Eintrag $wp_filter der alle Filter und Aktionen enthält. Siehe Quelle . Es ruft Ihre function nicht auf. Ihr Code wird nur ausgeführt, wenn die do_action und apply_filters aufgerufen werden (mit dem entsprechenden Hook-Namen), was sehr spät an der Stelle geschieht, an der diese Hooks sein sollten.

Man könnte sagen, dass dadurch die globale Variable $wp_filter größer wird => mehr Speicher benötigt wird. Aber ich denke, das Erstellen einer neuen function hat das gleiche Problem.

Organisationscode

Wenn Sie alles in eine function setzen, müssen Sie sich an alle Hooks in jeder Datei Ihres Themas / Plugins erinnern. Du würdest so etwas nicht tun:

  • in header.php : addieren Hooks und Callback-functionen für Dinge passieren im Header (wie Menü, Registrierung Skript)
  • in content.php : Fügen Sie Hooks und Callback-functionen zum Filtern von Inhalten hinzu
  • admin-menu.php : admin-menu.php Sie Hooks und Callback-functionen hinzu, um das Admin-Menü hinzuzufügen

(Angenommen, diese Dateien sind in Ihrem Theme / Plugin enthalten)

Stattdessen müssen Sie:

  • setze nur Callback-functionen in header.php , content.php , admin-menu.php
  • und lege alle Haken in eine separate function in einer anderen Datei

=> Das macht es schwer zu wissen, was passiert, wenn Sie den Inhalt der Datei header.php . Sie müssen suchen, um zu wissen, wann diese callbacke ausgetriggers werden.

Und denke über die Situation nach, wenn du mehrere classn in deinem Theme / Plugin hast. Legst du alle Haken aller classn an einen Ort? Oder hat jede class eine Wrapper-function, die alle Haken enthält? Es ist zu redundant!

Über diesen Grund denke ich, es ist persönlicher Stil :). Ich sehe einige Frameworks wie Hybrid, was du gesagt hast. Manchmal macht es mir schwer, in diesen Rahmen zu graben!