Mit apply_filters den WordPress Plugin-Pfad und die URL variabel machen
Wenn wir ein Plugin für WordPress entwickeln, benötigen wir die Funktionen plugins_url( $path , __FILE__ )
und plugin_dir_path( __FILE__ ) . $path;
um innerhalb unseres Plugins auf eingebettete Dateien zu verweisen, welche für die Funktionalität wichtig sind.
Zum einen zeigt dieser Artikel wie einfach wir eine benutzerdefinierte Wrapper-Funktion für unsere WordPress Plugin-Pfade erstellen können und zum anderen gehe ich darauf ein, wie wir unsere Plugin-Pfade mit apply_filters
variabel machen können. Das wäre dann hilfreich, wenn unser Plugin durch Dritte in deren Theme oder Plugin eingebettet wird und die Pfade abhängig von diesem Plugin geändert werden müssten.
Die WordPress URL zu unserem Plugin
Wenn wir die URL zu unserem WordPress Plugin benötigen, können wir dafür auf plugins_url( $path , __FILE__ )
zurückgreifen. Durch die folgende Wrapper-Funktion können wir unsere Plugin-URL für Dritte variabel machen und erhalten zugleich eine alternative Variante, wie wir die Plugin-URL in unseren Plugin-Dateien verwenden sollten:
So musst du die Plugin URLs nun angeben
Damit die Plugin URLs variabel sein können, musst du an jeder Stelle deines Plugin statt plugins_url( $path , __FILE__ )
nun die Funktion the_plugin_path( $path )
verwenden. Denn nur so kann deine Plugin URL durch Dritte unter Verwendung eines Filter angepasst werden:
Die URL zu einem anderen Verzeichnis umlenken
Nun kann ein anderes Theme oder Plugin, welches unser Plugin einbettet, alle Plugin URLs anpassen und zu einen anderen Verzeichnis umlenken:
Der absolute WordPress Pfad zu unserem Plugin
Wenn wir den absoluten WordPress Pfad zu unserem Plugin benötigen, um bspw. Dateien zu inkludieren oder PHP-Dateiprüfungen ausführen wollen, verwenden wir dafür plugin_dir_path( __FILE__ ) . $path;
. Um auch dies variabel zu gestalten, verwenden wir stattdessen nun the_plugin_dir( $path )
:
So musst du den absoluten Plugin Pfad nun angeben
Wenn du deinen absoluten Plugin Pfad für Dritte variabel gestalten willst, musst du nun anstelle von plugin_dir_path( __FILE__ )
immer the_plugin_dir( $path )
verwenden. Denn nur so können Pfade später durch die Verwendung eines Filters angepasst werden:
Den absoluten Pfad zu einem anderen Verzeichnis umlenken
Genauso wie für die Plugin URL, ist es nun auch für den absoluten Plugin Pfad möglich, durch Verwendung eines Filters, auf ein anderes Verzeichnis zu verweisen: