In welcher Reihenfolge werden Plugins in WordPress geladen?
Und in welcher Reihenfolge wird in einem bestimmten Plugin-Ordner geladen?
In welcher Reihenfolge werden Plugins in WordPress geladen?
Und in welcher Reihenfolge wird in einem bestimmten Plugin-Ordner geladen?
Antworten:
In wp-settings.php
sucht WordPress zuerst nach Plugins, die unbedingt benötigt werden (Plugins im optionalen mu-plugins
Ordner) und lädt diese.
Wenn Sie dann eine Multisite-Installation ausführen, wird nach Plugins gesucht, die im Netzwerk aktiviert sind, und diese werden geladen.
Anschließend wird anhand des active_plugins
Eintrags in der wp_options
Datenbanktabelle nach allen anderen aktiven Plug-ins gesucht und diese durchlaufen. 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, dass es normalerweise egal ist, in welcher Reihenfolge die einzelnen Plugins geladen werden, da ordnungsgemäß geschriebene Plugins WordPress-Hooks verwenden, mit denen Sie die Funktionalität später im WordPress-Start an bestimmten Stellen einbinden können. (Ordnungsgemäß geschriebene Plugins werden auch ihre Funktionen und Klassen voranstellen, damit es keine Konflikte gibt.)
Weitere Informationen zur Plugin-API: http://codex.wordpress.org/Plugin_API/
Kommt total auf das Plugin an. WordPress lädt nur eine Datei in das Plugin, die normalerweise benannt ist the-plugin-name.php
und den Titel, die Beschreibung, den Autor usw. oben enthält. Es liegt an dem Plugin, den Rest seiner Dateien mit require_once
und wp_enqueue_script
und so weiter zu laden.
apply_filters()
, um einen Hook zu erstellen, aber vor einem Plugin ausgeführt wird, das verwendet wird add_filter()
, funktioniert es dann immer noch? Logischerweise scheint das apply_filters()
bereits ausgelöst worden zu sein, sodass die add_filter()
Aufrufe im zweiten Plugin nichts bewirken. Ist es wichtig, in welcher Reihenfolge die Plugins geladen werden, wenn nur von Plugins erstellte Hooks verwendet werden?
apply_filters()
. add_filter()
muss vorher laufen apply_filters()
. Befindet add_filter()
sich das Plugin in einer Datei und nicht in einer anderen Funktion, wird es auf dem plugins_loaded
Hook ausgeführt, was normalerweise passieren wird, bevor Sie es benötigen apply_filters()
.
the_content
Wie wird die Reihenfolge ihres Erscheinungsbilds festgelegt?
Ich finde es nützlich, eine Aktion zum späten Laden in mein Plugin aufzunehmen, die ausgeführt wird, nachdem alle Plugins ihren Ladevorgang folgendermaßen abgeschlossen haben:
add_action('plugins_loaded', 'my_late_loader');
Die Funktion my_late_loader wird dann nach allen anderen Plugins gestartet, wodurch ich Hooks, die von anderen Plugins definiert wurden, in meiner eigenen Funktion my_other_loader verwenden kann, die in my_late_loader gestartet 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);
}
Es ist etwas kompliziert (ich weiß), aber dies stellt sicher, dass Hooks in anderen Plugins erstellt werden, bevor sie unabhängig von der Ladereihenfolge des Plugins hinzugefügt werden.