In welcher Reihenfolge werden Plugins in WordPress geladen?
Und in welcher Reihenfolge wird in einem bestimmten Plugin-Ordner geladen?
In wp-settings.php
sucht WordPress zunächst nach Plugins, die man unbedingt verwenden muss (Plugins im optionalen Ordner mu-plugins
) und lädt diese.
Wenn Sie eine Multisite-Installation ausführen, sucht es nach Plugins, die vom Netzwerk aktiviert werden, und lädt diese.
Dann sucht es nach allen anderen aktiven Plugins, indem es den Eintrag wp_options
databasetabelle wp_options
und diese durchläuft. Die Plugins werden alphabetisch aufgelistet.
Hier ist die Reihenfolge, in der WordPress so ziemlich alles lädt: http://codex.wordpress.org/Action_Reference#Actions_Run_During_a_Typical_Request
Die Sache ist, es ist normalerweise egal, in welcher Reihenfolge jedes einzelne Plugin geladen wird, denn richtig geschriebene Plugins werden WordPress-Hooks verwenden, mit denen Sie später im WordPress-Startup functionalität in bestimmte Punkte einfügen können. (Richtig geschriebene Plugins werden auch ihren functionen und classn vorangestellt, so dass es keine Konflikte gibt.)
Weitere Informationen zur Plugin-API: http://codex.wordpress.org/Plugin_API/
Kommt auf das Plugin an. WordPress lädt nur eine Datei in das Plugin, die normalerweise den Namen ” the-plugin-name.php
und oben den Titel, die Beschreibung, den Autor usw. enthält. Es liegt am Plugin, den Rest seiner Dateien mit require_once
und wp_enqueue_script
und whatnot zu laden.
Ich finde, dass es sinnvoll ist, eine ‘Late Loading’-Aktion in mein Plugin einzufügen, die ausgeführt wird, nachdem alle Plugins ihren Ladevorgang abgeschlossen haben:
add_action('plugins_loaded', 'my_late_loader');
Die function my_late_loader wird dann nach allen anderen Plugins gestartet, was es mir erlaubt, Hooks, die von anderen Plugins definiert wurden, in meiner eigenen function my_other_function zu verwenden, die in my_late_loader initiiert wird
/** * Late loading function for actions that must run after all plugins * have loaded */ function my_late_loader(){ add_action( 'some_hook', 'my_other_function', 10, 1); }
Bitkonvolut (ich weiß), aber dies stellt sicher, dass Hooks in anderen Plugins erstellt werden, bevor sie hinzugefügt werden, unabhängig von der Ladefolge des Plugins.