Ich möchte wissen, ob es eine gute Praxis gemäß dem WordPress-Thema oder der 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
quelle
wp_loaded
und MS Info.Ich sehe die großen Vorteile dieser Praxis aus folgenden Gründen nicht:
Ihre Rückruffunktionen werden bei der Registrierung nicht aufgerufen
Die Funktionen
add_action
undadd_filter
fügen der globalen Variablen nur einen Eintrag hinzu,$wp_filter
der alle Filter und Aktionen enthält. Siehe Quelle . Es ruft Ihre Funktion nicht auf. Ihr Code wird nur ausgeführt, wenn diedo_action
undapply_filters
aufgerufen werden (mit dem entsprechenden Hook-Namen), was sehr spät an der Stelle geschieht, an der sich diese Hooks befinden sollten.Sie könnten sagen, dass dadurch die globale Variable
$wp_filter
größer wird => mehr Speicher benötigt wird. Aber ich denke, das Erstellen einer neuen Funktion hat das gleiche Problem.Code organisieren
Wenn Sie alles in eine Funktion einfügen, müssen Sie sich alle Hooks in allen Dateien Ihres Themes / Plugins merken. Sie würden so etwas nicht tun:
header.php
: Hooks hinzufügen und Rückruffunktionen für Dinge, die im Header passieren (wie Menü, Registrierungsskript)content.php
: Fügen Sie Hooks und Rückruffunktionen zum Filtern von Inhalten hinzuadmin-menu.php
: Fügen Sie Hooks und Rückruffunktionen hinzu, um das Admin-Menü hinzuzufügen(Angenommen, diese Dateien befinden sich in Ihrem Theme / Plugin.)
Stattdessen müssen Sie:
header.php
,content.php
,admin-menu.php
=> Dadurch ist es schwierig zu wissen, was passiert, wenn Sie sich den Inhalt der
header.php
Datei ansehen . Sie müssen suchen, um zu wissen, wann diese Rückrufe ausgelöst werden.Und denken Sie an die Situation, wenn Ihr Thema / Plugin mehrere Klassen enthält. Platzieren Sie alle Haken aller Klassen an einem Ort? Oder hat jede Klasse eine Wrapper-Funktion, die alle Hooks enthält? Es ist zu überflüssig!
Über diesen Grund denke ich, dass es persönlicher Stil ist :). Ich sehe einige Frameworks wie Hybrid, die das tun, was Sie gesagt haben. Manchmal fällt es mir schwer, in diesen Frameworks zu graben!
quelle