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
und add_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 die do_action
und apply_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:
- in
header.php
: Hooks hinzufügen und Rückruffunktionen für Dinge, die im Header passieren (wie Menü, Registrierungsskript)
- in
content.php
: Fügen Sie Hooks und Rückruffunktionen zum Filtern von Inhalten hinzu
admin-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:
- setzen nur Callback - Funktionen in
header.php
, content.php
,admin-menu.php
- und setzen Sie alle Hooks in einer separaten Funktion in eine andere Datei
=> 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!
wp_loaded
und MS Info.