Wenn ich Plugins entwickle, teste ich sie auf mehreren Versionen von WordPress, indem ich mein Plugin-Verzeichnis mit den verschiedenen wp-content
Verzeichnissen verbinde. Das ist großartig, da ich die Dateien nur einmal bearbeiten muss, aber es bricht ein wichtiges Konstrukt ab, um Verweise auf Ressourcen in meinem Plugin zu generieren: __FILE__
Bezieht sich auf den physischen Speicherort des Plugins, nicht auf den in wp-content
. Wie soll ich das lösen?
Meine Verzeichnisstruktur sieht folgendermaßen aus:
/path/to/wordpress/development/dir/
plugin-development/
monkeyman-rewrite-analyzer/
monkeyman-rewrite-analyzer.php
js/
monkeyman-rewrite-analyzer.js
versions/
3.1/
wp-content/
plugins/
monkeyman-rewrite-analyzer
als Symlink zum obigen Plugin
3.1-multi-dir/
wp-content/
plugins/
monkeyman-rewrite-analyzer
als Symlink zum obigen Plugin
3.1-multi-domain/
wp-content/
plugins/
monkeyman-rewrite-analyzer
als Symlink zum obigen Plugin
Wenn ich die Javascript-Datei in die Warteschlange stellen möchte, sollte ich sie verwenden plugins_url( 'monkeyman-rewrite-analyzer.js', [base file] )
, aber die Verwendung __FILE__
hier funktioniert nicht, da der tatsächliche Dateipfad /path/to/wordpress/development/dir/plugin-development/monkeyman-rewrite-analyzer/monkeyman-rewrite-analyzer.php
nicht /path/to/wordpress/development/dir/versions/*/wp-content/plugins/monkeyman-rewrite-analyzer/monkeyman-rewrite-analyzer.php
so ist, dass WordPress den ersten Teil nicht entfernen und eine URL relativ zur WordPress-Installation generieren kann.
WP_PLUGIN_URL
wird nicht empfohlen, da Administratoren den Namen dieses bestimmten Plugin-Verzeichnisses ändern dürfen. Gibt es jedoch auch einen anderen Grund, dies zu vermeiden? Und in der Tat wäre Ihr Ticket eine einfache Lösung.