WordPress staging omgeving opzetten zonder lock-in

Een goede WordPress staging omgeving is meer dan een plugin-klik. Hoe ik het opzet zodat hij ook werkt als de site morgen Drupal of Laravel wordt.

· 30 juli, 2026 · 7 min lezen
In dit artikel

Een WordPress staging omgeving zet ik anders op dan de meeste tutorials voorschrijven, omdat dezelfde site over een jaar Drupal of Laravel naast zich kan hebben. Dat klinkt ver gezocht, maar in mijn ervaring kiezen ondernemers vaker dan ze denken voor een uitbreiding of migratie. Een staging-aanpak die alleen werkt met één specifieke WordPress-plugin staat dan in de weg.

Hieronder beschrijf ik de workflow zoals ik hem voor klanten opzet. Met een paar bewuste keuzes vooraf is een staging-omgeving niet een snel-klik-klusje, maar een fundament dat blijft staan. Ook als je site over een jaar groeit naar een hybride stack.

Werkplek voor het opzetten van een WordPress staging omgeving met dubbele terminal voor productie en staging en browser preview met staging banner

Waarom een WordPress staging omgeving anders is dan een back-up

Mensen halen deze twee vaak door elkaar. Een back-up is een momentopname die je terugzet als er iets kapot is. Een staging is een werkbare kopie waarop je dingen test voordat ze live gaan.

Een back-up is statisch. Je raakt hem niet aan, je laat hem liggen, je hoopt hem nooit nodig te hebben. Een staging is actief. Daar test je plugin-updates, ontwerp-wijzigingen, een nieuw thema, een WooCommerce-betaalkoppeling. Pas als het op staging werkt, gaat het naar productie.

Een derde misverstand: “ik draai het wel direct op live, het is een kleine wijziging.” In mijn ervaring is dat de manier waarop sites op vrijdagmiddag plat gaan. Iemand klikt op “Update”, een plugin breekt het thema, en het rolt zich door naar de checkout. Staging kost iets meer tijd vooraf en bespaart paniek achteraf.

Drie routes: plugin, hosting-knop, of handmatig op subdomein

Er zijn drie manieren om een staging op te zetten. Ze hebben allemaal hun plek.

Plugin-route. WP Staging is gratis, WP Stagecoach en BlogVault zijn betaalde alternatieven. Eén klik en je hebt een kopie op een subfolder. Werkt prima voor blogs en marketingsites. Nadeel: lock-in op één plugin, en bij grotere sites (WooCommerce met veel orders, multisite) loopt het mis.

Hosting-knop. Veel managed hosts (Kinsta, Cloudways, SiteGround, Combell, om enkele te noemen) bieden een native staging-knop. Meestal stabieler dan een plugin, want het draait op infrastructuurniveau. Nadeel: gebonden aan die hoster. Verhuis je, dan moet je opnieuw nadenken.

Handmatig op een subdomein. Eigen subdomein (bijvoorbeeld staging.jouwsite.nl), eigen database, kopie van bestanden, URL-rewrite via WP-CLI of een database-tool. Meer werk vooraf, maar hoster- en plugin-onafhankelijk. Dit is wat ik in de meeste gevallen kies, zeker als er een vermoeden is dat de site of de hoster nog gaat veranderen.

Wat ik kies en waarom

Mijn voorkeur ligt bij hosting-native staging waar die beschikbaar is en stabiel werkt, anders handmatig op subdomein. De plugin-route gebruik ik zelden, en alleen voor kleine sites zonder e-commerce.

De reden is simpel: hosting-native staging praat met de webserver, niet door WordPress heen. Een plugin moet via PHP een hele site klonen, en bij grote uploads-mappen of veel WooCommerce-orders crashed dat regelmatig. Hosting-native heeft toegang tot file-system-level kopieën en kan synchroniseren zonder PHP-limieten.

Handmatig op subdomein heeft een ander voordeel: ik hou de configuratie expliciet. Een .env-achtige scheiding tussen staging en productie (andere database-credentials, andere SMTP-instellingen, andere Stripe-keys) maak je dan zelf in wp-config.php met een conditionele check op WP_ENV of het hostname. Dat principe komt direct terug als je later een Laravel- of Drupal-omgeving naast WordPress zet.

WP-CLI search-replace commando met dry-run voor het aanpassen van URLs bij een WordPress staging kopie

Database-sync: de stap waar staging meestal misgaat

WordPress-data is serialized. Dat betekent: als je in de database een URL wilt vervangen, breekt een simpele search-replace de PHP-arrays die om die URL heen staan. Bijvoorbeeld widget-instellingen, theme-options en Yoast-data.

Daarvoor gebruik ik WP-CLI’s search-replace. Die snapt serialized data en herstelt de arrays correct na een vervanging. Een voorbeeld:

wp search-replace 'https://jouwsite.nl' 'https://staging.jouwsite.nl' --skip-columns=guid

--skip-columns=guid is belangrijk: de guid mag niet veranderd worden, dat is een unieke identifier per post. Wie hem wel verandert, krijgt RSS-readers in de war.

Geen WP-CLI beschikbaar? Dan is WP-CLI search-replace docs je referentie, of je gebruikt Interconnect/IT’s Database Search Replace script. Die laatste upload je naar de root van je staging-site en draait via de browser. Niet vergeten te verwijderen na gebruik; het is een open script dat iedereen kan misbruiken.

Bij WooCommerce een extra regel: orders, klanten en betalingen ga je nooit terug-syncen van staging naar live. Een test-bestelling op staging mag niet terechtkomen in de productie-boekhouding. De richting van sync is altijd één kant op: live naar staging, niet andersom.

Indexering blokkeren en credentials separeren

Een staging-site die door Google geïndexeerd wordt is een duplicate-content-probleem en een lek van interne info. Drie maatregelen, ik gebruik ze meestal allemaal:

robots.txt + noindex meta-tag. Niet waterdicht, maar wel de eerste laag. WordPress heeft onder Instellingen > Lezen een vinkje “discourage search engines” dat een noindex-header toevoegt. Goed beginnen, maar niet vertrouwen op alleen dit.

Basic auth via .htaccess. Een browser-prompt om gebruikersnaam en wachtwoord voor de hele staging-omgeving. Zo serieus eenvoudig dat het me verbaast hoe weinig dit standaard is. Twee regels in .htaccess, één htpasswd-bestand, klaar.

Aparte database-credentials. Staging draait op een eigen database-user met een eigen wachtwoord. Als iemand staging-toegang krijgt, kan hij niet bij productie. Hetzelfde voor SMTP (dummy of MailHog), Stripe (test-keys), Mollie (test-mode), en welke API-koppeling dan ook waarvoor live-keys risico betekenen.

Eén keer per project tijd nemen voor deze setup bespaart elke keer paniek wanneer iemand “even iets” wil testen.

Basic auth via htaccess voor een WordPress staging omgeving met browser aanmeldpopup voor toegangsbeheer

Van staging naar productie zonder backup-restore-paniek

De gevaarlijkste fase: deploy van staging naar live. Hier gaan sites stuk. De val is dat mensen de hele staging-database over productie heen kopiëren, en daarbij hun live-content, orders en gebruikers overschrijven.

Wat ik doe in plaats daarvan:

Code en config via Git of SFTP. Het thema, eventuele custom plugins, child-theme-aanpassingen, en wp-config-wijzigingen verhuizen via versiecontrole of een gerichte file-upload. Niet de hele wp-content-map kopiëren, alleen wat is gewijzigd.

Database-tabellen selectief. Heb je nieuwe plugin-settings, ACF-velden of een Yoast-config aangepast op staging? Die zitten in wp_options, wp_postmeta en plugin-specifieke tabellen. Per geval bekijken: kun je het opnieuw doen op live (vaak het veiligst), of moet je specifieke rijen exporteren en importeren?

Content niet syncen. Posts, pages, comments, orders blijven op live. Wijzigingen aan content doe je rechtstreeks op productie, niet op staging. Staging is voor code en config, niet voor blogposts.

Voor een gemiddelde wijziging duurt de deploy zelf 10 tot 30 minuten als je de checklist hebt. Een back-up vooraf is standaard, ook bij kleine deploys. Verbeteren boven herbouwen werkt alleen als je niet bij elke deploy het risico loopt opnieuw te moeten beginnen.

Hoe deze workflow ook voor Joomla, Drupal en Laravel werkt

Het principe achter een goede staging is platform-onafhankelijk: kopie van data + URL-rewrite + index-blokkering + getest deploy-pad. Wat verandert is de tooling per stack.

Joomla heeft Akeeba Backup als de facto kloon-tool: maakt een complete site-snapshot, restore op een subdomein, met ingebouwde URL-rewrite. Hetzelfde indexering-blokkering-principe geldt, hetzelfde deploy-pad voor code en config.

Drupal heeft drush sql-sync om databases tussen omgevingen te synchroniseren, plus Configuration Management voor het scheiden van code en data. Je commit de config in Git, de content blijft per omgeving uniek. Cleaner dan WordPress in dit opzicht.

Laravel kent .env-files voor per-omgeving-configuratie en php artisan migrate --pretend om migraties te previewen voordat je ze draait. Staging is hier vaak een aparte server of Docker-container, niet een subdomein op dezelfde stack.

In alle gevallen geldt: de source-code is van jou, dus de staging-omgeving moet kunnen meereizen als je later van stack wisselt. Een staging die alleen werkt met één specifieke WordPress-plugin is een gevangenis als je gaat groeien.

Voor doorlopend onderhoud waarbij staging als standaard wordt opgezet en gebruikt, kun je terecht bij doorlopend onderhoud met staging als standaard. Ik werk dan op standaard uurtarief van 70 euro per uur, zodat je staging-werk en updates uit dezelfde pot komen.

Serhii Lypii
Gratis meedenken

Volgende stap

Twijfel je welke staging-route het beste bij je site past? Stuur me de URL en je hoster. Ik kijk in een kwartier of hosting-native werkt, of dat handmatig op subdomein verstandiger is, en zet hem daarna in een paar uur op met de juiste deploy-pad.

Vraag staging-setup aan
Vond je dit nuttig? Deel het:
FAQ

Veelgestelde vragen

Is de gratis WP Staging-plugin goed genoeg?
Voor kleine sites en korte tests ja, voor WooCommerce-shops met serieuze orderstromen of multisite-installaties vaak niet. De hosting-native staging is meestal stabieler omdat hij niet door PHP heen hoeft te werken. Voor blogs en marketingsites is WP Staging een goede start.
Kan ik op staging gewoon mijn live plugins testen?
Ja, dat is precies het doel. Wel met test-API-keys (Stripe, Mollie, Mailchimp), anders verstuur je per ongeluk live-mails of triggert je echte transacties. SMTP zet ik standaard op een dummy of MailHog, zodat geen enkele klant per ongeluk een test-bevestiging ontvangt.
Hoe lang mag een staging-omgeving blijven staan?
Technisch onbeperkt. Praktisch: elke maand dat hij niet gebruikt wordt, is er weer een verouderde WordPress-installatie die geüpdatet moet worden. Mijn richtlijn: na afronding van een project staging opruimen, of hem aanmerken als doorlopende test-omgeving die in het reguliere onderhoud meeloopt.
Mag ik mijn staging gewoon op een subdomein zetten?
Ja, mits geïndexeerd door zoekmachines geblokkeerd is (basic auth bij voorkeur, robots.txt als minimum) en je andere database-credentials gebruikt dan productie. Een subdomein op dezelfde hoster is prima, een aparte staging-server is luxe maar zelden nodig voor MKB-sites.
Hoe sync ik wijzigingen van staging terug naar live zonder klantdata te overschrijven?
Niet de hele database terugzetten. Alleen specifieke tabellen of liever code en config via Git/SFTP, plus eventueel handmatig de plugin-instellingen overzetten. Content en orders blijven op live. Een complete database-restore van staging naar productie is bijna altijd een ongeluk, geen workflow.
Serhii Lypii
Over de auteur

Serhii Lypii

Freelance webmaster · Terneuzen

Sinds 2012 werk ik met websites en leverde ik ruim 210 projecten op. Ik help mkb-ondernemers met onderhoud, snelheid, beveiliging en praktische automatisering. Nuchter, zonder hype.

Ik schreef dit artikel op en werkte het voor het laatst bij op .

Meer over Lypii
Even sparren over je site?

Loop je ergens tegenaan of twijfel je over je site? Ik denk graag mee — kies hieronder hoe je contact opneemt.

Reactie binnen 4 uur op werkdagen
Navigatie
Home Over mij Kennisbank
Contact
+31 6 39 56 93 03 serhii@lypii.nl WhatsApp
Stuur een bericht