Einfachere Plugin-Entwicklung durch Verschieben des Plugin-Verzeichnisses

Als erfahrener Plugin-Programmierer testet man seine Plugins nicht nur mit der allerneuesten WordPress-Version, sondern auch mit vorherigen Versionen, denn es gibt eine Menge älterer WordPress-Installationen. Man hat also die verschiedensten Versionen auf dem Entwicklungsserver installiert und möchte sein neuesten Codeänderungen mit jeder dieser Versionen testen.

Man könnte also bei jeder Codeänderung das Plugin manuell in die einzelnen Pluginverzeichnisse jeder Version kopieren… aber wir sind Programmierer, also ist dies keine Option, oder?

Wenn das Entwicklungssystem unter einem *nix-System läuft kann man versuchen, das Problem mit symbolischen Links zu lösen. Das klappt leider auch nicht, aber das ist kein Bug in WordPress, sondern in PHP.

Glücklicherweise enthält WordPress ein paar Konstanten, mit denen man sich das Leben trotzdem einfacher
machen kann: WP_PLUGIN_DIR und WP_PLUGIN_URL. Diese Konstanten zeigen auf das Pluginverzeichnis der jeweiligen WordPress-Installation. Sie sind seit WordPress 2.6 definiert und eine Unterstützung älterer Versionen ist nicht sehr sinnvoll.

Um die Plugins für jede WordPress-Installation zugänglich zu machen verschiebt man die Plugins einfach in ein zentrales Verzeichnis und definiert die Konstanten entsprechend:

define( 'WP_PLUGIN_DIR', '/var/www/plugins' ); // oder mit XAMPP C:/xampp/htdocs/plugins
define( 'WP_PLUGIN_URL', 'http://localhost/plugins' );

In diesem Beispiel liegt die Plugins in „plugins“ im Root-Verzeichns des Webservers. Wenn man jetzt die obigen Konstanten jeder WordPress-Installation auf dieses Verzeichnis verweisen lässt, kann man sehr einfach neuen Code mit jeder dieser Versionen testen.

(Danke John Blackbourn in der wp-hackers-Liste für die Idee.)

Hinweis für Multisite-Benutzer (mit Dank an an Frank)

Das funktioniert auch mit WordPress MultiSite:

    define( 'WPMU_PLUGIN_DIR', '/var/www/multisite-plugins' );
    define( 'WPMU_PLUGIN_URL', 'http://localhost/multisite-plugins' );

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert