Wanneer je serieus aan een website begint te sleutelen – in WordPress of in welk ander systeem dan ook – moet je vóór je begint één basisregel goed onthouden: experimenteer niet in productie.
Om meerdere redenen:
- Omdat de resultaten rampzalig kunnen zijn als je niet precies weet wat je aanraakt of geen back-up hebt.
- Omdat je daardoor, terwijl je alles herstelt, een stresspiek kunt krijgen waar niemand op zit te wachten.
- En omdat een lokale kopie maken maar een half uurtje kost en je jezelf er eeuwig dankbaar voor zult zijn.
Ik herhaal:
Eerst maak je een lokale kopie. Daarna ga je sleutelen. Niet andersom.
De laatste dagen, nu ik mijn website grondig aan het veranderen ben, moest ik dit doen. Dus heb ik van de gelegenheid gebruikgemaakt en deze tutorial gemaakt.
Mijn website had al jaren content, 250 berichten, sinds 2013 verzamelde afbeeldingen en was groot genoeg om ervoor te zorgen dat Duplicator twee keer halverwege bleef hangen voordat het eindelijk werkte.
Ook dat staat hier. De fouten – en de oplossingen – inbegrepen.
Índice de Contenidos del Artículo
- Waarvoor dient een lokale WordPress-kloon?
- Tools die ik heb gebruikt
- Stap-voor-stap gids om je WordPress lokaal te klonen
- Stap 1: LocalWP installeren
- Stap 2: controleren of de lokale WordPress opent
- Stap 3: Duplicator installeren op de echte website
- Stap 4: een kopie maken met Duplicator
- Stap 5: DupArchive proberen als ZIP faalt
- Stap 6: het pakket maken zonder de map uploads
- Stap 7: de Duplicator-bestanden downloaden
- Stap 8: de map downloaden uploads
- Stap 9: LocalWP voorbereiden om de kopie te importeren
- Stap 10: de Duplicator-installer lokaal uitvoeren
- Stap 11: de installatiebestanden opruimen
- Stap 12: uploads kopiëren naar de lokale WordPress
- Stap 13: het probleem met kapotte afbeeldingen oplossen
- Stap 14: zichtbare warnings corrigeren
- Stap 15: productie opschonen
- Stap 16: de lokale kloon testen
- Stap 17: een herstelpunt maken voordat je doorgaat
- Veelvoorkomende problemen in dit proces
- Conclusie
- Veelgestelde vragen
- Kan ik WordPress gratis lokaal klonen?
- Waarom faalt Duplicator bij het maken van de ZIP?
- Kan ik uploads uitsluiten van het Duplicator-pakket?
- Waarom zie ik de afbeeldingen niet in WordPress lokaal?
- Is het veilig om Duplicator op productie te installeren?
- Moet je cache-plugins lokaal activeren?
- Waarom een kloon maken voordat je Polylang installeert?
Waarvoor dient een lokale WordPress-kloon?
Met een lokale kopie kun je op je eigen computer werken zonder de echte website aan te raken.
Handig voor: plugins testen, van thema wisselen, de database bekijken, een migratie voorbereiden, een technische audit doen, Polylang installeren, CSS aanpassen of dingen stukmaken zonder dat Google, je gebruikers of je klant het merken.
In mijn geval was het doel tweeledig:
- Het ontwerp volledig veranderen: van een leadgeneratie-website naar een digitaal magazine.
- De website voorbereiden op AI-ondersteunde vertaling. Een eigen ontwikkeling met een zeker risico, omdat je meerdere dingen tegelijk aanraakt.
In elk geval is het proces hetzelfde als je geautomatiseerd wilt hercategoriseren, van thema wilt wisselen, een grote plugin zoals WooCommerce wilt toevoegen of gewoon een testomgeving wilt hebben voordat je iets serieus aanraakt.
Tools die ik heb gebruikt
- LocalWP: om de lokale WordPress-omgeving te maken.
- Duplicator: om de productiewebsite te exporteren.
- cPanel: het controlepaneel van de hosting om de map met afbeeldingen handmatig te downloaden.
- WP-CLI: inbegrepen in LocalWP, om interne WordPress-opties te corrigeren.
Allemaal gratis.
Stap-voor-stap gids om je WordPress lokaal te klonen
Nu je de tools kent, gaan we naar het stappenplan, dat iets langer is dan normaal.
Hoe dan ook, zodat je een idee hebt: in ongeveer 30 minuten heb je alles klaar, afhankelijk van de problemen die je tegenkomt. Want als je website klein is en geen foutmeldingen geeft, kan het zelfs in minder dan tien minuten.
Weinig investeringen zijn rendabeler dan deze.
Stap 1: LocalWP installeren
LocalWP maakt lokale WordPress-installaties aan zonder dat je Apache, MySQL en PHP handmatig hoeft te configureren. Je hebt geen XAMPP, WAMP of LAMP nodig.
Je installeert het, maakt een nieuwe site aan en binnen twee minuten draait er een schone WordPress op je computer.
In mijn geval noemde ik die yg, dus LocalWP gaf hem het lokale domein https://yg.local met deze omgeving:
| Veld | Waarde |
| Server | nginx |
| PHP | 8.2 |
| Database | MySQL |
| WordPress | Schone installatie |
Dat is genoeg om te beginnen.
Stap 2: controleren of de lokale WordPress opent
Voordat je iets importeert, open je de lokale site en ga je naar het dashboard:
- https://yg.local
- https://yg.local/wp-admin
Als hij laadt en je kunt inloggen, is de omgeving klaar. Installeer nog niets. Raak geen instellingen aan. Controleer alleen of het werkt.
Stap 3: Duplicator installeren op de echte website
Log in op de productie-WordPress (niet op de lokale) en installeer Duplicator:
Plugins > Nieuwe plugin toevoegen > Duplicator
Installeer en activeer hem.
Belangrijk: Duplicator wordt op productie geïnstalleerd. Het idee is om een pakket van de echte website te maken en dat daarna in LocalWP te importeren.
Stap 4: een kopie maken met Duplicator
Ga vanuit het productiedashboard naar:
Duplicator > Packages
Maak een nieuw pakket aan met een naam waaraan je kunt zien waarvoor het is. Ik gebruikte:
yagogonzalez-copia-local-fase0
De eerste scan waarschuwde dat de site groot was. Niets vreemds bij websites met jaren aan content.
Het probleem kwam bij het bouwen van het pakket:
Couldn't close zip archive
De server kon het ZIP-bestand niet afsluiten.
Dat betekent niet dat de website kapot is. Het betekent dat de hosting de operatie niet kon afronden, waarschijnlijk door omvang, uitvoeringstijd of geheugenlimieten.
Eerste probleem om op te lossen.
Stap 5: DupArchive proberen als ZIP faalt
Duplicator biedt een alternatief wanneer ZIP faalt: DupArchive.
Daarvoor moet je de archief-engine van ZIP naar DupArchive wijzigen. Het pakket wordt dan als .daf gegenereerd in plaats van als .zip.
Dat wijzig je via:
Duplicator > Instellingen > Back-ups > Archief
Zoek daar naar Archive Engine en wijzig ZipArchive naar DupArchive.
Sla daarna de wijzigingen op.
Alles klaar?
Nou, nee. Nieuwe foutmelding:
De totale grootte van de bestanden en de database overschrijdt de limiet van 500 MB
De kopie woog ongeveer 1,33 GB. Alles veranderen werkte dus ook niet zomaar.
De oplossing: niet alles in het pakket stoppen.
Stap 6: het pakket maken zonder de map uploads
De map die het gewicht van elke WordPress met jaren historie omhoogjaagt is wp-content/uploads/.
Daar staan afbeeldingen, PDF’s, thumbnails, WebP-bestanden en alles wat sinds de eerste dag is geüpload.
Om het downloadpakket kleiner te maken, activeerde ik in Duplicator de bestandsfilters en sloot ik uit:
- wp-content/uploads/
- wp-content/cache/
- wp-content/upgrade/
- wp-content/backups-dup-lite/
- wp-content/plugins/duplicator/backups/
Hiermee bevat het pakket het belangrijke deel om de website opnieuw op te bouwen: database, WordPress, thema, plugins, configuratie, berichten, pagina’s, taxonomieën, ACF, Yoast en interne instellingen.
De afbeeldingen downloaden we apart. Ik leg je in stap 8 uit hoe.
Stap 7: de Duplicator-bestanden downloaden
Zodra het pakket is gegenereerd, maakt Duplicator twee bestanden aan:
- installer.php
- bestand .zip of .daf
Download allebei.
Dat zijn de bestanden waarmee je de website lokaal opnieuw kunt opbouwen. De installer pakt het pakket uit, importeert de database, vervangt URL’s en past paden aan.
Stap 8: de map downloaden uploads
Omdat uploads niet in het pakket zat, moet je die handmatig vanaf de hosting downloaden.
Het gebruikelijke pad in WordPress:
/public_html/tudominio.com/wp-content/uploads/
Als je normale hosting hebt, kun je die downloaden via de opties van de bestandsbeheerder van cPanel. Dat heb ik gedaan.
Als dat op deze manier niet lukt, moet je het op de ouderwetse manier doen: downloaden via FTP of SFTP rechtstreeks naar je computer met FileZilla of iets vergelijkbaars.
Tip: comprimeer de map niet op de server. Daarmee belast je de hosting opnieuw en kan het net zo misgaan als met Duplicator. Rechtstreeks downloaden is trager, maar veiliger.
Stap 9: LocalWP voorbereiden om de kopie te importeren
Met de twee Duplicator-bestanden gedownload ga je terug naar LocalWP:
- Voor de lokale site: klik op Stop site.
- Open de map van de site: klik op Site folder.
- Ga naar app > public.
- Verwijder de inhoud van public (de schone WordPress die LocalWP heeft aangemaakt).
- Kopieer daar de twee Duplicator-bestanden naartoe.
Belangrijk: je moet de inhoud van publicverwijderen, niet de map public.
De map moet blijven bestaan en erin mogen alleen de twee gedownloade bestanden staan:
- installer.php
- copia-local.daf
Start daarna de site: klik op Start site.
Stap 10: de Duplicator-installer lokaal uitvoeren
Open de installer in de browser:
https://yg.local/installer.php
De installer detecteert het pakket en start het proces.
Om verbinding te maken met de lokale database gebruik je de gegevens van LocalWP:
| Veld | Waarde |
| Database Host | localhost |
| Database Name | local |
| User | root |
| Password | root |
Omdat het een lege lokale installatie was (die het programma standaard in het begin aanmaakt), geef je aan dat je accepteert dat Duplicator de vorige database verwijdert.
Geen probleem: hij verwijderde alleen de schone WordPress van LocalWP, niet de echte website.
Daarna vervangt Duplicator de URLs:
- Old URL: https://yagogonzalez.com
- New URL: https://yg.local
Wanneer het klaar is, kun je inloggen op de lokale WordPress.
Belangrijk: na het importeren van de database zijn de gebruikersnaam en het wachtwoord die van de echte website, niet die die je eerst in LocalWP hebt aangemaakt.
Stap 11: de installatiebestanden opruimen
Duplicator verwijdert normaal gesproken de installatiebestanden wanneer het klaar is:
- installer.php
- bestand .daf
- map dup-installer
- installatielogs
Op productie is dat belangrijk voor de veiligheid. Lokaal is het minder kritisch, maar het is verstandig om het schoon achter te laten.
Controleer voordat je doorgaat of ze na de installatie niet meer bestaan.
Stap 12: uploads kopiëren naar de lokale WordPress
Met de site gestopt (Stop site) in LocalWP ga je naar app > public > wp-content en kopieer je daar de map uploads die je hebt gedownload.
De juiste structuur:
<em>wp-content/</em>
├── plugins/
├── themes/
└── uploads/
├── 2013/
├── 2014/
...
└── 2026/
Wat er niet mag gebeuren:
wp-content/uploads/uploads/2026/
Die dubbele uploads/uploads is een klassieke fout wanneer je vóór het downloaden naar zip comprimeert en breekt alle afbeeldingspaden.
Stap 13: het probleem met kapotte afbeeldingen oplossen
In mijn geval kwam hier het grootste probleem (omdat het onverwacht was): de website laadde, maar de afbeeldingen werden niet getoond. En het lag niet aan het pad met dubbele upload.
Het probleem zat in de URL die WordPress voor de afbeeldingen genereerde:
https://yg.local/C:/Users/pcadmin/Local Sites/yg/app/public/wp-content/uploads/2026/06/imagen.webp
Alles wat vet stond was overbodig. De juiste URL moest zijn:
https://yg.local/wp-content/uploads/2026/06/imagen.webp
WordPress had in de optie upload_path een absoluut Windows-pad opgeslagen:
C:/Users/pcadmin/Local Sites/yg/app/public/wp-content/uploads
Om dit te corrigeren open je Site shell in LocalWP en voer je deze drie commando’s één voor één uit:
wp --url=https://yg.local option delete upload_path
wp --url=https://yg.local option delete upload_url_path
wp --url=https://yg.local cache flush
Daarna, na opnieuw laden, verschenen de afbeeldingen wel.
Het probleem was dat er ook meerdere Warnings (waarschuwingen) verschenen.
Stap 14: zichtbare warnings corrigeren
Zoals ik al zei, verscheen deze warning op de lokale website:
Constant WP_POST_REVISIONS already defined
Hier heb ik ChatGPT erbij gepakt, want ik had geen idee hoe ik dit moest oplossen.
Het probleem kwam uit functions.php van het thema, dat WP_POST_REVISIONS definieerde zonder te controleren of die al ergens anders was gedefinieerd.
De correctie:
<em>if ( ! defined( 'WP_POST_REVISIONS' ) ) {</em>
<em> define( 'WP_POST_REVISIONS', false );</em>
<em>}</em>
Als de waarde in jouw geval anders is, respecteer dan gewoon jouw waarde:
<em>if ( ! defined( 'WP_POST_REVISIONS' ) ) {</em>
<em> define( 'WP_POST_REVISIONS', <strong>5</strong> );</em>
<em>}</em>
Ik heb het aangepast via de bestandseditor van het WordPress-thema (Weergave > Thema-bestandseditor), sloeg het bestand op en klaar.
Stap 15: productie opschonen
Nu de lokale kopie werkt, ga je terug naar de echte website en verwijder je de sporen van Duplicator:
- Duplicator > Packages: verwijder de aangemaakte pakketten.
- Plugins > Geïnstalleerde plugins: deïnstalleer Duplicator.
Dit heeft geen invloed op de lokale kopie. Het voorkomt alleen dat je zware pakketten en onnodige installers op productie laat staan.
Het is niet verplicht, maar wel aanbevolen.
Stap 16: de lokale kloon testen
Controleer meerdere URLs voordat je verdergaat.
In mijn geval controleerde ik:
- De homepage.
- Een bericht.
- Een categorie.
- Een subcategorie.
- Een tag.
Ik deed dat zo omdat elk ervan een andere template gebruikt:
- https://yg.local
- https://yg.local/ruta-de-escape
- https://yg.local/tecnologia
- https://yg.local/ocio/series
- https://yg.local/negocio
Vier dingen om te controleren:
- De website laadt.
- De afbeeldingen worden getoond.
- Het ontwerp is hetzelfde als op productie.
- De interne links verwijzen naar yg.local, niet naar yagogonzalez.com.
Dit laatste punt is cruciaal. Als je op een artikel klikt en naar productie wordt gestuurd, zijn er nog URL’s verkeerd vervangen.
Stap 17: een herstelpunt maken voordat je doorgaat
Deze stap is opnieuw optioneel, maar aanbevolen.
Voordat je in lokaal de wijzigingen gaat doen die je nodig hebt of iets serieus gaat aanraken, maak je een herstelpunt.
In LocalWP kun je de site klonen:
Clone site
In mijn geval maakte ik een kopie met de naam yg-pre-polylang.
De logica:
- yg = lokale werksite.
- yg-pre-polylang = schone kopie voordat je iets aanraakt.
Als er iets kapotgaat, hoef je niet de hele migratie vanaf productie opnieuw te doen, maar pak ik deze schone kopie en werk ik daarop verder. Niet zonder hem eerst opnieuw te klonen, natuurlijk.
Veelvoorkomende problemen in dit proces
Lokale migraties lukken bijna nooit meteen perfect. Ik groepeer hier de problemen die in dit geval opdoken.
De ZIP van Duplicator faalde
Fout: Couldn't close zip archive
Oorzaak: serverlimieten (grootte, uitvoeringstijd, geheugen).
Oplossing: DupArchive proberen of zware mappen uit het pakket uitsluiten.
DupArchive had een groottelimiet
Fout: het pakket was groter dan 500 MB.
Oplossing: uitsluiten wp-content/uploads/ en die map apart downloaden.
De afbeeldingen laadden niet
Oorzaak: WordPress gebruikte een absoluut Windows-pad alsof het een publieke URL was.
Oplossing:
wp option delete upload_path
wp option delete upload_url_path
PHP-warning door een constante die al gedefinieerd was
Oorzaak: WP_POST_REVISIONS twee keer gedefinieerd in functions.php.
Oplossing: de definitie omwikkelen met if ( ! defined(…) ).
Conclusie
Als je website weinig weegt, doet Duplicator alles vanzelf. Maar als hij jaren aan content en verzamelde afbeeldingen heeft, is het normaal om het proces in tweeën te splitsen:
- Duplicator = database + WordPress + thema + plugins
- FTP/SFTP = map uploads
En daarna controleer je paden, afbeeldingen, warnings en interne links voordat je iets serieus aanraakt.
De lokale kopie is niets waard als ze niet écht werkt.
En als je iets delicaats gaat aanraken — meertaligheid, redesign, grote plugins, SEO-migraties — is dat rechtstreeks op productie doen onnodig risico nemen.
Je hebt de tools. Ze zijn gratis. En het proces, ook al is het niet automatisch, doe je in een half uur.
Onthoud:
Eerst lokaal. Dan testen. Daarna productie. In die volgorde.
Zoals Bale en golf, maar dan toegepast op WordPress.
Trouwens, hier laat ik je het vervolg op dit artikel: hoe je de snelheid van WPLocal optimaliseert.
Veelgestelde vragen
Kan ik WordPress gratis lokaal klonen?
Ja. LocalWP, Duplicator en FTP/SFTP zijn gratis. Als de website groot is, moet je een deel van het proces handmatig doen, zoals uploads apart downloaden, maar je hoeft niets te betalen.
Waarom faalt Duplicator bij het maken van de ZIP?
Door serverlimieten: maximale grootte, uitvoeringstijd of geheugen. De meest directe oplossing is overschakelen naar DupArchive of zware mappen zoals uploads uitsluiten voordat je het pakket genereert.
Kan ik uploads uitsluiten van het Duplicator-pakket?
Ja. Je sluit de map uit in de filters van Duplicator en downloadt hem apart via FTP of SFTP. Daarna kopieer je hem handmatig naarwp-content/uploads/de lokale site.
Waarom zie ik de afbeeldingen niet in WordPress lokaal?
Bijna altijd komt dat door de optieupload_pathdie verkeerd is ingesteld. Als je in de URL van de afbeeldingen iets ziet alsC:/Users/..., dan is dat het probleem. Je lost het op door die optie met WP-CLI te verwijderen.
Is het veilig om Duplicator op productie te installeren?
Ja, maar alleen zolang het nodig is. Zodra je de kopie hebt gedownload, verwijder je de pakketten en deïnstalleer je de plugin.
Moet je cache-plugins lokaal activeren?
Niet in het begin. Controleer eerst of de kloon werkt: afbeeldingen, URLs en ontwerp. Daarna kun je, als je het productiegedrag wilt repliceren, WP Rocket of een andere cache-plugin activeren.
Waarom een kloon maken voordat je Polylang installeert?
Omdat Polylang URLs, taxonomieën en relaties tussen content aanraakt. Als er iets kapotgaat, wil je terug kunnen zonder de hele migratie opnieuw te doen.

Geef een reactie