Reihenfolge der WordPress Plugin-Ausführung ändern
Manchmal kommt es vor, dass man als Blog-Besitzer beeinflussen möchte, in welcher Reihenfolge die PlugIns von WordPress ausgeführt werden.
Diese Reihenfolge kann von euch ganz einfach geändert werden. Wie dies funktioniert, erfahr ihr im folgenden.
Problemstellung
Am Wochenende hatte ich mal wieder am Blog-Design gebastelt. Dabei kam mir die Idee einen kleinen Hinweistext zu meinen Social Network Buttons auszugeben.
Da mir aber mein Plugin diese Möglichkeit nicht bot, wollte ich dies nun über ein anderes Plugin realisieren.
Das Problem war aber nun, dass das andere Plugin aber immer nach dem Social Network PlugIn ausgeführt wurde, sodass der Text immer da drunter stand.
Eigentlich sollte er aber da drüber ausgegeben werden, weshalb ich nun herausfinden musste, woran sich WordPress bei der Ausführungsreihenfolge seiner Erweiterungen orientiert.
Manuell die Ausführungsreihenfolge ändern
Die Lösung ist so simpel wie genial: WordPress führt die Plugins in der Reihenfolge aus, wie sie im Plugins-Ordner des Blogs zu finden sind, sprich alphanumerisch.
Den Ordner findet ihr hier:
Blog-Root-Verzeichnis/wp-content/plugins
Wenn ihr also ein Plugin als erstes auführen lassen wollt, dann müsst ihr einfach dem Unterordner des jeweiligen Plugins beispielsweise eine Eins, ein A oder ähnliches vorgeben. Hauptsache es landet in der alphanumerischen Sortierung vor den anderen Plugins. Dann wird dieses auch als erstes ausgeführt.
Vor so einer Umbenennung würde ich aber auf jeden Fall das umzubenennende Plugin erst einmal deaktivieren, damit es nicht zu Fehlern kommt. Zwar merkt WordPress dies normalerweise und deaktiviert es von selbst, ich würde aber trotzdem Vorsicht walten lassen und das gute Stück selber deaktivieren.
Das einzige, worauf ich sonst noch achten würde, ist das Aussparen von Sonderzeichen. Auch wenn man dadurch ebenfalls die Reihenfolge ändern kann, könnte ich mir vorstellen (ich hab es jetzt nicht getestet), dass WordPress bei dem einen oder anderen Zeichen sicher seine Probleme bekommt. Auch wenn das sicher keiner machen wird, wollte ich das der Vollständigkeitshalber hier noch kurz anmerken 😉
Per Code die Ausführungsreihenfolge ändern
Sollte dies nicht ausreichen, gibt es auch eine Code-Lösung hierfür.
Und zwar könnt ihr, wenn ihr selber ein Plugin entwickelt, das zwingenderweise nach einem anderen Plugin ausgeführt werden soll, dies mit dem Action-Hook „activated_plugins“ steuern. Dies kann in der Praxis dann so aussehen:
function this_plugin_first() {
// ensure path to this file is via main wp plugin path
$wp_path_to_this_file = preg_replace('/(.*)plugins\/(.*)$/', WP_PLUGIN_DIR."/$2", __FILE__);
$this_plugin = plugin_basename(trim($wp_path_to_this_file));
$active_plugins = get_option('active_plugins');
$this_plugin_key = array_search($this_plugin, $active_plugins);
if ($this_plugin_key) { // if it's 0 it's the first plugin already, no need to continue
array_splice($active_plugins, $this_plugin_key, 1);
array_unshift($active_plugins, $this_plugin);
update_option('active_plugins', $active_plugins);
}
}
add_action("activated_plugin", "this_plugin_first");
Mehr Infos hierzu findet ihr hier im WordPress-Forum.
So, ich hoffe dem einen oder anderen hat dieser Tipp geholfen!
Ah, okay! Über das Problem bin ich auch schon öfter gestolpert. Ich hab aber nie ernsthaft nach einer Erklärung der Ausführungsreihenfolge gesucht, da es dann am Ende doch nicht so wichtig war.
Hi Alex,
das ging mir auch so. Aber jetzt hatte ich dann doch mal das Bedürfnis das endlich mal zu klären 😉
Carsten