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_actionund add_filterfügen der globalen Variablen nur einen Eintrag hinzu, $wp_filterder alle Filter und Aktionen enthält. Siehe Quelle . Es ruft Ihre Funktion nicht auf. Ihr Code wird nur ausgeführt, wenn die do_actionund apply_filtersaufgerufen 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_filtergröß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.phpDatei 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_loadedund MS Info.