WordPress mit Composer installieren

WordPress ist bei ca. 25 % der Websites weltweit im Einsatz und damit nicht kleinzureden. Für uns liegt der große Vorteil einerseits in der Geschwindigkeit in der man ein Projekt starten kann, als auch in der Anpassbarkeit des Backends.

Das WordPress-Setup ist für Einsteiger einfach und rühmt sich nicht umsonst mit einer „Installation in 5 Minuten“. Ein Assistent führt durch die wichtigsten Schritte. Für uns ist es allerdings wichtig, dass wir mehrere Installationen einer Website auf verschiedenen Servern laufen lassen können, um in der Entwicklung mehrere Umgebungen zu haben und nicht jede Änderung gleich zu launchen. Dafür ist WordPress von Hause aus nicht gut geeignet. Ein ganzes Stück helfen kann es aber, WordPress über Composer zu installieren.

Dazu erstellt man einen leeren Projektordner und legt eine neue Datei composer.json ab.

{"repositories":[{"type":"composer","url":"http:\/\/wpackagist.org"}],"require":{"johnpbloch\/wordpress":"4.3.*","wpackagist-plugin\/cachify":"*"},"extra":{"installer-paths":{"public\/wp-content\/plugins\/{$name}\/":["type:wordpress-plugin"]},"wordpress-install-dir":"public\/wordpress"}}

Der Konfiguration habe ich auch gleich beispielhaft ein Plugin hinzugefügt, weitere Plugins findet man beim WordPress Packagist. Das eigentliche Installieren geht dann über die Konsole:

# Composer runterladen
curl -sS https://getcomposer.org/installer | php

# Abhängigkeiten installieren
php composer.phar install

Wenn alles geklappt hat, müsste jetzt im Ordner public/wordpress/ eine WordPress-Installation liegen. Aus diesem Ordner kopiert man wp-content/ und wp-config.php in den Ordner public/ und ändert die Zeile in der WordPress geladen wird:

/** Loads the WordPress Environment and Template */
require( dirname( __FILE__ ) . '/wordpress/wp-blog-header.php' );

Damit WordPress den neuen wp-content/ Ordner benutzt, muss man in der wp-config.php folgende Konstanten ersetzen:

/* Change wp-content folder. */
define ('WP_CONTENT_FOLDERNAME', '../wp-content');
define ('WP_CONTENT_DIR', ABSPATH . WP_CONTENT_FOLDERNAME) ;
define ('WP_CONTENT_URL', '/wp-content');

Ab jetzt kann man in public/wp-content/ wie gewohnt arbeiten.  Ein Hinweis noch: Composer erstellt beim Installieren eine composer.lock. Ja, die gehört mit ins Git-Repository. In der composer.lock steht, welche Versionen installiert wurden. Zieht sich jemand das Repository und installiert die Abhängigkeiten, werden exakt die Versionen aus der composer.lock installiert.

In die .gitignore gehören dann folgende Zeilen:

/public/wp-config.php
/public/wordpress
/public/wp-content/plugins
/public/wp-content/uploads

Hans Pagel

Hans, gelernter Designer, berät, konzipiert und programmiert. Ob individuelle, experimentelle oder pragmatische Lösungen, er findet eine, die zu dir passt.