Eine Staging-Umgebung ist die beste Versicherung gegen kaputte Live-Websites. Direkt in Produktion zu arbeiten, ist der häufigste Grund für kaputte Websites. Ein sauberer Workflow trennt Entwicklung, Test und Live-Betrieb.
Die drei Umgebungen
- Local: Entwicklung auf dem eigenen Rechner (z. B. DDEV, Lando, wp-env, LocalWP).
- Staging: Möglichst identisch mit Produktion (gleiche PHP-Version, gleicher Webserver, gleiche Plugins), aber von Suchmaschinen und Öffentlichkeit abgeschirmt.
- Production: Wird nur über den definierten Workflow verändert.
Mit WP_ENVIRONMENT_TYPE kennt jede Umgebung ihren Typ.
Staging richtig absichern
- HTTP Basic Auth oder IP-Whitelist vor die ganze Staging-Site.
blog_publicauf 0 und zusätzlichX-Robots-Tag: noindex.- Ausgehende Mails abfangen (z. B. Mailpit oder ein MU-Plugin, das
pre_wp_mailfiltert). - Zahlungs-Gateways in den Testmodus, Webhooks und Cronjobs zu Drittsystemen deaktivieren.
- Personendaten anonymisieren, wenn Produktionsdaten kopiert werden (nDSG/DSGVO).
Code vs. Inhalte
Grundregel: Code fliesst nach oben (Local → Staging → Production), Inhalte fliessen nach unten (Production → Staging → Local). Wer Datenbanken nach oben kopiert, überschreibt Bestellungen, Kommentare und Formulareinträge.
Git-basiertes Deployment
Ins Repository gehören das eigene Theme, eigene Plugins, MU-Plugins und Konfiguration, nicht Uploads, Caches oder Secrets. Fremd-Plugins lassen sich per Composer über WPackagist verwalten:
{
"repositories": [ { "type": "composer", "url": "https://wpackagist.org" } ],
"require": {
"wpackagist-plugin/query-monitor": "^3.16",
"wpackagist-theme/twentytwentyfive": "*"
},
"extra": { "installer-paths": {
"wp-content/plugins/{$name}/": ["type:wordpress-plugin"],
"wp-content/themes/{$name}/": ["type:wordpress-theme"]
} }
}
Projekt-Boilerplates wie Bedrock strukturieren das Ganze mit .env-Dateien und getrenntem Webroot.
Atomare Deployments
Statt Dateien auf dem Live-Server zu überschreiben, wird jede Version in ein eigenes Release-Verzeichnis ausgeliefert und per Symlink aktiviert:
releases/2026-11-10_2140/
releases/2026-11-03_1015/
current -> releases/2026-11-10_2140
shared/uploads, shared/.env
Ein Rollback ist dann nur ein Symlink-Wechsel. Tools: Deployer (PHP), GitHub Actions/GitLab CI mit rsync, oder die Deploy-Funktion des Hosters.
Datenbank zwischen Umgebungen
wp @prod db export - | wp @staging db import -
wp @staging search-replace 'https://example.ch' 'https://staging.example.ch' --all-tables --precise
Kombination mit DISALLOW_FILE_MODS
Wenn alles über Git/Composer läuft, kann in Produktion DISALLOW_FILE_MODS gesetzt werden. Damit sind Plugin-Installationen über das Backend – und damit ein beliebter Angriffsweg nach Admin-Übernahme – blockiert.
Weiterführende Artikel
- Update-Strategie: Auto-Updates, Staging und Rollback
- WP-CLI für Power User: Befehle und Workflows
- Datei-Editor deaktivieren und Installationen einschränken