WordPress: wp-config.php für unterschiedliche Umgebungen aufteilen

Für die Einstellungen von WordPress, die über die wp-config.php gesetzt werden, wird im normal Fall nicht unterschieden in welcher Umgebung (Lokal, Staging oder Live) das WordPress läuft. Jedoch haben die Umgebungen oft nicht die gleichen Einstellungen. Ein gutes Beispiel sind die Anmeldedaten für die Datenbank. In meinem Fall hat die lokale Datenbank andere Anmeldedaten als die Datenbank auf dem Live-Server.

Da ich die wp-config.php immer gerne mit in das Git-Repository aufnehme, entstehen dabei mehrere Probleme. Im schlechtesten Fall liegt in jeder Umgebung, eine veränderte wp-config.php, die nicht commited ist. Denn die Anmeldedaten für die Datenbank gehören nicht in das Repository unabhängig davon, ob dies privat oder öffentlich ist. Zusätzlich kommen aber noch Einstellungen hinzu, die auf allen Umgebungen gleich sein sollen.

Für die Lösung des Problems habe ich angefangen, die Konfigurationsdatei von WordPress aufzuteilen. Es gibt die klassische wp-config.php, in der allgemeine Einstellungen gespeichert sind, die sich nicht unterscheiden. Für alle weiteren Daten wie z.B. die Datenbank oder den Debug-Modus gibt es eine weitere Datei, die die Einstellungen enthält, die sich unterscheiden und einmalig für das System sind, auf dem das WordPress läuft.

Zusätzlich zu der wp-config.php gibt es in meinem Setup die Dateien wp-config.local.php und wp-config.example.php. In der Datei wp-config.local.php werden alle Einstellungen für die Umgebung gespeichert. Diese Datei wird auch von Git ignoriert. Als Vorlage dient die wp-config.example.php. Diese wird kopiert und umbenannt, wenn das WordPress auf einer neuen Umgebung eingerichtet wird.

Am Anfang der wp-config.php werden die Einstellungen für die Umgebung geladen. Die ganze Magie passiert in nur 3 Zeilen.

if ( file_exists( dirname( __FILE__ ) . '/wp-config.local.php' ) ) {
    require_once( dirname( __FILE__ ) . '/wp-config.local.php' );
}

So viel Magie ist es dann doch nicht. Es wird überprüft, ob die wp-config.local.php vorhanden ist. Ist dies der Fall wird diese geladen und die Einstellungen für die Umgebung stehen auf dem bekannten Weg zur Verfügung.

Über diesen Weg lassen sich die Einstellungen für WordPress sauber trennen und man hat die Möglichkeit allgemeine Einstellungen zu versionieren ohne sich Gedanken zu machen, dass eventuell doch Anmeldedaten ins Repository aufgenommen werden.

Vermutlich verwendest du einen veralteten Browser. Da diese Website auf moderne Technik setzt, benötigst du einen aktuellen Browser, um diese Website richtig darzustellen.