# Migratie van WooCommerce naar PrestaShop: volledige gids

> Overzicht WooCommerce-migratie (dfmigratewoocommerce) brengt een volledige WooCommerce-winkel naar PrestaShop 8 of 9 over: categorieën, tags, globale attributen, eenvoudige en variabele producten (met varianten die combinaties worden), afbeeldingen, eigen metagegevens, klanten…

- Pagina: <https://www.datafirefly.com/nl/documentation/dfmigratewoocommerce/>
- Taal: nl
- Bijgewerkt op: 2026-09-09
- Andere talen: [fr](https://www.datafirefly.com/documentation/dfmigratewoocommerce/index.md), [en](https://www.datafirefly.com/en/documentation/dfmigratewoocommerce/index.md), [es](https://www.datafirefly.com/es/documentation/dfmigratewoocommerce/index.md), [de](https://www.datafirefly.com/de/documentation/dfmigratewoocommerce/index.md), [it](https://www.datafirefly.com/it/documentation/dfmigratewoocommerce/index.md), [pl](https://www.datafirefly.com/pl/documentation/dfmigratewoocommerce/index.md), [pt](https://www.datafirefly.com/pt/documentation/dfmigratewoocommerce/index.md)
- Index: <https://www.datafirefly.com/nl/documentation/llms.txt>

## Overzicht

WooCommerce-migratie (`dfmigratewoocommerce`) brengt een volledige WooCommerce-winkel naar PrestaShop 8 of 9 over: categorieën, tags, globale attributen, eenvoudige en variabele producten (met varianten die combinaties worden), afbeeldingen, eigen metagegevens, klanten met adressen en bestellingen. De module verbindt rechtstreeks met de MySQL-database van WordPress, werkt in AJAX-batches zonder timeout en houdt in de database een koppeling tussen Woo en PS bij, waardoor elke stap zonder dubbels opnieuw te starten is.

De WooCommerce-brondatabase wordt uitsluitend **gelezen** en nooit gewijzigd. Alle schrijfacties gebeuren aan PrestaShop-zijde.

## Installatie

1. Open in de PrestaShop-backoffice **Modules > Modulebeheer > Een module uploaden** en kies de ZIP `dfmigratewoocommerce.zip`.
2. De module maakt drie technische tabellen aan: `df_woomig_mapping` (de koppelingen tussen Woo en PS), `df_woomig_log` (het logboek) en `df_woomig_progress` (de voortgang van de stappen).
3. Klik op **Configureren** om de migratie-interface te openen.

## Verbinding met WooCommerce

Vul in het tabblad **Verbinding** het volgende in:

- **Host en poort**: de MySQL-server van de WordPress-database (standaard poort 3306);
- **Database, gebruiker en wachtwoord**: de inloggegevens van de WordPress-database;
- **Tabelvoorvoegsel**: doorgaans `wp_`, te controleren in `wp-config.php` ($table_prefix);
- **URL van de site**: het publieke adres van de WooCommerce-winkel, dat dient om de afbeeldingen te downloaden (HTTP-modus), of een pad op het bestandssysteem in de lokale modus.

Klik op **De verbinding testen**: de module toont hoeveel producten, categorieën, tags, globale attributen, klanten en bestellingen er in de bron zijn gevonden.

Blokkeert uw host de externe MySQL-verbindingen, importeer dan een dump van de WordPress-database in een eigen schema op de PrestaShop-server (bijvoorbeeld `wp_source`) en verbind de module met dat schema via `localhost`. Een SSH-tunnel werkt eveneens.

## Parameters

- **Standaardtaal**: de PrestaShop-taal waarin de (eentalige) Woo-inhoud wordt weggeschreven;
- **Standaard belastinggroep**: geldt voor alle overgezette producten, want de Woo-prijzen worden onveranderd in de PrestaShop-prijs exclusief btw gekopieerd;
- **Attributen als kenmerken**: schakelt de dubbele koppeling in (elk globaal attribuut wordt ook een kenmerk, zichtbaar op de eenvoudige producten) en neemt de eigen postmeta over als kenmerken `meta:*`;
- **Batchgrootte**: het aantal entiteiten per AJAX-verzoek (standaard 25; verlaag dat op trage gedeelde hosting);
- **Beeldmodus**: `http` (downloaden vanaf de URL van de site) of `local` (de URL van de site geldt als een pad op het bestandssysteem met daarin `wp-content/uploads`);
- **Dry-run**: de simulatiemodus, waarbij alles in het logboek komt maar er niets wordt weggeschreven;
- **Standaardvervoerder**: wordt aan de overgezette bestellingen toegekend.

## De migratie starten

Voer in het tabblad **Migratie** de stappen **in volgorde** uit, want elke stap steunt op de koppelingen die de vorige heeft gemaakt:

1. **Attributen**: elk globaal Woo-attribuut (`pa_*`) wordt een attribuutgroep in PS (kleurgroepen worden herkend) en, als de optie aanstaat, ook een kenmerk. Alle waarden worden aan beide kanten aangemaakt.
2. **Categorieën**: de volledige structuur wordt heropgebouwd; ontbrekende bovenliggende categorieën worden recursief opgelost, en wezen komen met een waarschuwing onder de wortel te staan.
3. **Tags**: ontdubbeld op naam.
4. **Producten**: eenvoudige en variabele producten, met prijzen, doorgestreepte prijzen (SpecificPrice), SKU, gewicht, afmetingen, voorraad, status, virtueel product, koppelingen met categorieën en tags, kenmerken en eigen metagegevens. De varianten worden combinaties met een eigen prijsimpact, voorraad en referentie. De afbeeldingen van het product gaan meteen mee.
5. **Afbeeldingen**: een inhaalstap die de al overgezette producten doorloopt en de ontbrekende afbeeldingen importeert (hoofdafbeelding en galerij), met een heropbouw van alle miniaturen.
6. **Klanten**: accounts met factuur- en leveradressen. De wachtwoorden worden opnieuw in bcrypt aangemaakt: de klanten gebruiken bij hun eerste aanmelding « wachtwoord vergeten ». E-mailadressen die aan PS-zijde al bestaan, worden hergebruikt en nooit gedupliceerd.
7. **Bestellingen**: met automatische herkenning van HPOS (WooCommerce 8+, de tabellen `wc_orders`) of van de legacy-opslag (`wp_posts`). De regels, totalen, valuta en statussen worden aan de PrestaShop-toestanden gekoppeld. Er vertrekt geen enkele e-mail.

Elke stap toont een voortgangsbalk in real time en kan worden onderbroken en daarna opnieuw gestart: zij hervat precies waar zij stopte.

Doe eerst een volledige ronde in **dry-run** om de omvang in het logboek te controleren, zet daarna de dry-run uit en start opnieuw.

## Koppelingen en nieuwe pogingen

Het tabblad **Koppelingen** toont per soort entiteit hoeveel koppelingen er zijn. Elke entiteit die in de koppeltabel staat, wordt bij een nieuwe poging overgeslagen: u kunt een hele stap opnieuw draaien zonder dubbels aan te maken. Met de knop om opnieuw in te stellen wist u de koppelingen van één soort (of van alles); de entiteiten die aan PrestaShop-zijde al zijn aangemaakt, blijven staan.

## Logboek

Het tabblad **Logboek** toont de gebeurtenissen per stap en per niveau (info, geslaagd, waarschuwing, fout): aangemaakte producten, overgeslagen varianten bij gebrek aan een globaal attribuut, niet gevonden afbeeldingen, bestellingen zonder klant en meer. Met één klik ruimt u het op.

## Na de migratie

- Bouw de zoekindex opnieuw op via **Winkelparameters > Zoeken > Alle producten indexeren**;
- Controleer een steekproef van de prijzen als uw Woo-winkel prijzen inclusief btw bewaarde (PrestaShop verwacht bedragen exclusief btw);
- Controleer de belastinggroep, de vervoerders en de betaalmethoden;
- Verwijder de verbindingsinstellingen (of verwijder de module): de MySQL-inloggegevens staan in de configuratie van PrestaShop.

## Bekende grenzen

- **Lokale** attributen (die op één product zijn bepaald en dus geen `pa_*` zijn) die in een variant worden gebruikt, kunnen geen combinaties worden, want PrestaShop vraagt globale attributen. Die varianten worden overgeslagen en in het logboek gemeld. Zet ze zo nodig vóór de migratie aan Woo-zijde om naar globale attributen.
- De bestellingen komen als historiek binnen: de belastingen worden niet herberekend en de Woo-totalen worden onveranderd gekopieerd.
- Kortingsbonnen, productreviews en abonnementen gaan in deze versie niet mee.

## Problemen oplossen

### « Verbinding mislukt » bij de test

Controleer of de MySQL-gebruiker vanaf het IP-adres van de PrestaShop-server mag verbinden (`GRANT ... ON database.* TO 'user'@'ip'`) en of poort 3306 open staat. Zo niet, gebruik dan een lokale dump of een SSH-tunnel.

### Ontbrekende afbeeldingen in de HTTP-modus

De WooCommerce-site moet vanaf de PrestaShop-server via HTTP of HTTPS bereikbaar zijn. Is de bronsite gesloten, gebruik dan de modus `local` door `wp-content/uploads` naar de PrestaShop-server te kopiëren en dat pad als URL van de site in te vullen.

### Ontbrekende varianten bij een product

Bekijk het logboek: gebruikten de varianten lokale attributen (dus geen globale), dan worden zij bewust overgeslagen. Het bovenliggende product gaat wel mee, met zijn basisgegevens.
