WP All Import · XML · CSV · JSON · WooCommerce · ACF
WP All Import specialist
Grote XML-, CSV- en JSON-feeds netjes in WordPress en WooCommerce — met delta-imports, custom PHP-functies, betrouwbare cron en monitoring. Catalogus draait, jij bouwt aan je business.
- 100k+
- Rows zonder timeout
- Delta
- Alleen wat verandert
- PHP
- Custom mapping
- Cron
- Volledig automatisch
Waarom dit ertoe doet
Data is geen detail. Een goede import is je halve shop.
Een webshop of content-site valt of staat met de kwaliteit van de data erachter. Verkeerde prijzen, dubbele producten, missende voorraad of een import die op woensdag stilletjes afbreekt — klanten merken het binnen een dag, marges binnen een week. Een goed ingerichte WP All Import-setup met delta-imports, custom helpers en monitoring is niet sexy, maar wel het verschil tussen een catalogus die draait en een team dat brandjes blust.
Imports die nooit meer omvallen
Een feed van 80.000 producten die op woensdag stilletjes afbreekt is geen import meer — het is roulette. Met delta-imports (alleen wat veranderde), chunked processing, juiste server-limits en monitoring draait je import elke nacht door, ook als de leverancier opeens 30.000 SKU's extra stuurt.
Custom PHP-functies in plaats van workarounds
De grafische mapper van WP All Import is geweldig — totdat je meer dan één if-statement nodig hebt. Eén goed geschreven helper-functie in functions.php (of een eigen plugin) vervangt 15 verkrampte inline expressies en is jaren later nog leesbaar.
WooCommerce-producten écht goed importeren
Simple, variable, grouped, bundle en subscription — met varianten, attributen, taxonomies, brands, gallery, downloads, prijzen per rol en stock. Plus de juiste hooks zodat indexen, search en caching netjes meeschalen na een import van 50k SKU's.
ACF, taxonomies en relaties die kloppen
ACF Pro velden (repeater, flexible content, post-object, relationship), custom taxonomies, parent/child-koppelingen tussen posts — allemaal mappable. Eén leverancier-CSV kan dan in één run een productcatalogus én een merken-taxonomy én bijbehorende handleidingen vullen.
Eén feed als bron van waarheid
Geen vier mensen die dezelfde productdata op vier plekken bijhouden. ERP, PIM of leverancier exporteert dagelijks een XML/CSV/JSON, WP All Import doet de rest. Wijzigingen verschijnen automatisch, verwijderde rijen krijgen status 'out of stock' of worden opgeschoond.
Betrouwbaarheid, niet alleen functionaliteit
Foutlogs in Slack of Teams, dry-run op staging voor elke grote wijziging, fallback bij een corrupte feed, en alerts als een run langer dan X minuten duurt of meer dan X errors gooit. Je weet wat er gebeurt, ook als jij niet kijkt.
Twijfel je waar in jouw import-setup de winst zit? Ik denk graag mee — gewoon Maarten zelf, geen sales-trechter.
Hoe het eruit ziet
Een nachtelijke import en de custom helpers eronder
Twee plekken waar het verschil meteen zichtbaar is: een delta-run die in minuten klaar is, en de PHP- helpers waarmee de mapping leesbaar én onderhoudbaar blijft.
WP All Import · delta-run
healthy78k SKU's · 229 wijzigingen · 4 minuten i.p.v. 6 uur full re-import.
- feed.fetch→leverancier.xml · 78.412 records · 14s14.0sok
- validate→schema OK · 0 missing columns612msok
- diff→+18 nieuw · ~204 wijzigingen · -7 verwijderd1.8sok
- chunk→batch 1/3 · 100 records · 11s11.0sok
- media→12 nieuwe afb. → CDN · AVIF + srcset2.8sok
- cache→object-cache flush voor 229 product-IDs144msok
- sitemap→Yoast sitemap ververst86msok
- alert→0 errors · runtime 4m 12s · next 02:008msok
Custom helpers · PHP-plugin
leesbaarHelpers in een eigen plugin — vervangen tientallen inline expressies in de mapper.
<?php
/**
* WP All Import helpers
* Geregistreerd in een eigen plugin, niet in functions.php.
*/
namespace Soetens\Wpai;
/**
* Prijs uit feed → prijs incl. BTW, afgerond op .95
* Wordt aangeroepen vanuit de mapper als:
* [pretty_price({price[1]}, {vat[1]})]
*/
function pretty_price( $raw, $vat = '21' ): string {
$net = (float) str_replace( ',', '.', (string) $raw );
if ( $net <= 0 ) {
return '';
}
$gross = $net * ( 1 + ( (float) $vat / 100 ) );
$rounded = floor( $gross ) + 0.95;
return number_format( $rounded, 2, '.', '' );
}
/**
* EAN → unique key voor parent/child mapping van varianten
*/
function variant_key( $sku, $ean ): string {
$clean = preg_replace( '/[^A-Z0-9]/', '', strtoupper( (string) $sku ) );
return $clean !== '' ? $clean : 'ean-' . $ean;
}
/**
* Brand-taxonomy uit feed-string normaliseren
*/
function brand_term( $raw ): string {
$name = trim( preg_replace( '/\s+/', ' ', (string) $raw ) );
return wp_strip_all_tags( $name );
}Loopt jouw import nog elke nacht uren? Ik denk graag mee — gewoon Maarten zelf, geen sales-trechter.
Herkenbaar?
Veelvoorkomende WP All Import-problemen — en wat ik eraan doe
Bijna elk WP All Import-traject begint met een van deze klachten. Goede kans dat jij er ook minstens één herkent.
Import loopt vast op timeouts of memory
Pijn: Feed van 60k producten, na 4.300 rijen breekt het af met een memory of execution-time error. Niemand durft de import nog opnieuw te starten omdat de helft al verwerkt is.
Aanpak: Chunked processing (kleinere batches per run), juiste WP_MEMORY_LIMIT, max_execution_time op CLI, WP-CLI voor de zware runs in plaats van WP-Cron in de browser. Plus 'resume from last record' zodat een gebroken run gewoon verder kan.
Feed-formaat verandert zonder waarschuwing
Pijn: Leverancier voegt een veld toe of hernoemt 'price' naar 'unit_price'. Volgende ochtend zijn alle producten op €0 gezet of gedupliceerd. Hele dag bezig met opruimen.
Aanpak: Schema-validatie op de feed vóór de import draait, met alert in Slack als kolommen ontbreken of types niet kloppen. Plus een dry-run-modus die rapporteert wat er zou gebeuren, zonder iets te schrijven.
Full re-import elke dag, ook voor 5 wijzigingen
Pijn: Elke nacht draait de hele 80k-feed opnieuw, server kreunt 6 uur lang, alleen om 12 prijswijzigingen door te voeren. Caching is na de import compleet leeg.
Aanpak: Delta-import: vergelijken met een hash per record of een 'updated_at' veld, alleen wijzigingen en nieuwe records verwerken. Van 6 uur naar 4 minuten — en de page cache blijft grotendeels intact.
Varianten en attributen lopen door elkaar
Pijn: Variable products met 6 varianten worden in WooCommerce 6 losse simple products. Of erger: attributen worden per variant gedupliceerd waardoor de productpagina onbruikbaar wordt.
Aanpak: Juiste parent/child-mapping in WP All Import met unique identifier per variabele product, attributen als pa_-taxonomy correct registreren, en defaults voor missing variants. Plus een check die rapporteert als een variant geen ouder vindt.
Foto's worden bij elke run opnieuw gedownload
Pijn: Per dag 80k foto's opnieuw downloaden, opslag en bandbreedte exploderen, importtijd verviervoudigt. Media library raakt vol met duplicates.
Aanpak: Image-hash check (alleen downloaden bij wijziging), bestaande media library hergebruiken op basis van filename of meta, en optionele image-CDN ervoor zodat de site snel blijft ondanks duizenden product-foto's.
Na de import is SEO weg
Pijn: Slugs gewijzigd door de import, geen redirects, indexering gaat onderuit. Of: alle producten op `noindex` gezet omdat één veld in de feed verkeerd stond.
Aanpak: Slug-stability afdwingen op een vast veld (SKU of EAN), 301-redirects voor noodzakelijke wijzigingen, SEO-velden (Yoast/Rank Math) consistent mappen, sitemap automatisch ververst na de run, en een SEO-smoke-test in de monitoring.
Sparren over je WP All Import setup?
Stabiele feeds, snellere imports, minder handwerk.
Ik kijk mee in je import-sets, feed-structuur en cron-setup en schets een aanpak waarmee je catalogus draait zonder dat iemand er nog naar hoeft te kijken.
Onder de motorkap
Performance en een mapping die je over een jaar nog snapt
Wat een eigenaar ziet is een snelle ochtend zonder support-tickets. Wat ik eronder bouw is een delta- import die hash-based werkt, en een feed-naar- WooCommerce mapping die zelfs een nieuwe developer binnen een uur begrijpt.
Voor → na · nachtelijke import
deltaReal-world stats na overstappen op delta-import + chunked processing.
Voor (full)
Na (delta)
- Hash per record · alleen wijzigingen schrijven
- WP-CLI run i.p.v. WP-Cron in de browser
- Image-hash check · media library hergebruikt
- Chunked processing · hervatbaar bij fout
- Object-cache flush gericht per gewijzigd ID
Feed → WooCommerce mapping
leverancier-XMLEen doorsnede van een echte import-set: producten + ACF + brands + relaties.
- idpost_name (slug)stable op EAN
- namepost_titletrim + decode entities
- description_htmlpost_contentwp_kses_post() filter
- price · vat_price · _regular_pricepretty_price() helper
- stock_stock · _stock_status0 → outofstock
- brandtax: pa_brandbrand_term() normalize
- images[]_thumbnail_id + galleryimage-hash dedupe
- specs[]ACF repeater 'specs'key/value uit feed
- manuals[]ACF post_object 'manuals'EAN-matched relatie
- ean_sku · uniqueness keyfallback bij ontbreken SKU
1
import-set
3
post-types
0
handwerk
Loopt je import nog op full re-import elke nacht? Ik denk graag mee — gewoon Maarten zelf, geen sales-trechter.
Wat het oplevert
Voorbeelden van wat een goede WP All Import-developer toevoegt
Een import-setup hoort iets op te leveren, niet alleen 'te draaien'. Dit zijn voorbeelden van wat ik bij eerdere klanten heb ingericht — als inspiratie voor wat in jouw situatie kan.
Van 6 uur naar 4 minuten per nachtelijke import
Delta-import met SHA-hash per regel, alleen wijzigingen verwerkt. 78k SKU's, gemiddeld 220 wijzigingen per nacht. Server-load van 100% naar 6%, page-cache 95% intact. Nooit meer trage ochtend voor klanten.
50k variabele producten met attributen en brands
Eén XML van leverancier → simple, variable en grouped products, met 12 attributen als pa_-taxonomies, brand-taxonomy, gallery-images, downloads en stock per locatie. Alles in één import-set met custom PHP-helpers voor edge cases.
Custom PHP-functies vervangen 30 inline expressies
Klant had voor elke productprijs een rij geneste IF-statements in de mapper. Vervangen door 8 helpers in een eigen plugin: prijs-rounding, BTW-categorie, korting-staffels, EU-locale formatting. Onderhoudbaar én sneller.
Leverancier-CSV vult catalogus + brands + handleidingen
Eén CSV importeert producten, brand-taxonomy, repeater-velden voor specs, post-object-relaties naar handleidingen (PDF) en eigen taxonomy voor compatibele modellen. Editor hoeft nergens meer iets handmatig te koppelen.
Gebroken feed faalt netjes in plaats van data te corrumperen
Leverancier stuurt een halve XML door netwerk-hiccup. Validatie pikt het op, run wordt afgebroken vóór schrijven, vorige snapshot blijft live, Slack-alert naar #ops. Geen €0-prijzen of verdwenen producten meer.
20 uur per week aan handwerk geschrapt
Catalogus die met 2 mensen elke week handmatig werd bijgewerkt, draait nu volledig op WP All Import + custom functies + cron. Die 2 mensen werken nu aan content en SEO i.p.v. data-onderhoud. Direct meetbare ROI.
Welk voorbeeld past op jouw situatie? Ik denk graag mee — gewoon Maarten zelf, geen sales-trechter.
Wat ik bouw
Onderdelen die ik dagelijks oplever
Elk onderdeel hieronder is een afgebakende klus die ik vaak los of in combinatie oppak. Klein genoeg voor een sprint, groot genoeg om verschil te maken.
Geplande imports (cron / WP-CLI)
Server-cron of WP-CLI in plaats van WP-Cron in de browser — betrouwbaar, hervatbaar en zonder timeouts.
XML, CSV, JSON & API-feeds
Direct van URL, FTP/SFTP, S3, lokaal bestand of via een custom data-source (REST/GraphQL).
Custom PHP-functies
Helper-functies in een eigen plugin voor mapping, prijslogica, conditional logic en transformaties.
WooCommerce-producten
Simple, variable, grouped, bundle, subscription — met varianten, attributen, taxonomies, brands en stock.
ACF, CPT & taxonomies
ACF Pro (repeater, flexible content, post-object), eigen Custom Post Types en taxonomies volledig mappable.
Delta-imports
Alleen wijzigingen verwerken via hash of updated_at — uren werk in minuten klaar.
Slimme media-pipeline
Image-hash check, bestaande media hergebruiken, optionele image-CDN voor performance.
Validatie & alerts
Schema-checks op de feed, dry-run mode, foutlogs en Slack/Teams-alerts bij problemen.
Multilingual imports
Polylang/WPML-koppeling zodat één feed automatisch in meerdere talen wordt geïmporteerd.
SEO-stabiel importeren
Slugs gefixeerd op SKU/EAN, redirects bij wijzigingen, Yoast/Rank Math-velden mee en sitemap-refresh.
Migraties & oude exports
Van Magento, Lightspeed, CCV, OpenCart of oude WooCommerce — eenmalige migraties via WP All Import.
Onderhoud & monitoring
Cron-monitoring, runtime-stats, foutlogs en periodieke audits op grote import-sets.
Een specifiek onderdeel in je hoofd? Ik denk graag mee — gewoon Maarten zelf, geen sales-trechter.
Bronnen & bestemmingen
Systemen waar ik WP All Import mee verbind
Exact · AFAS · Snelstart · Visma
ERP-feeds als bron
Akeneo · Sales Layer · Pimcore
PIM als bron voor productdata
Logic4 · custom WMS
Stock & order-feeds
WooCommerce · WC Subscriptions · Bundles
Producttypes en uitbreidingen
Yoast · Rank Math · Polylang · WPML
SEO & meertalig
Cloudflare Images · Bunny CDN
Snelle media-pipeline
n8n · Make · Zapier
Pre-processing en alerts
Channable · ChannelEngine · Bol
Marktplaats-feeds in en uit
GA4 · Looker Studio
Import-stats en business reporting
Ander systeem? Vraag het even. Ik denk graag mee — gewoon Maarten zelf, geen sales-trechter.
Kansen per type site
Waar de winst zit, per situatie
Webshops met grote catalogi
- 10k–500k SKU's zonder timeouts
- Varianten, brands en attributen netjes
- Stock & prijs delta's per uur
- Marktplaats-feeds erbij
B2B & groothandel
- Klantspecifieke prijslijsten importeren
- EAN/SKU als unieke sleutel
- Documentatie en datasheets per product
- ERP-naar-shop synchronisatie
Content-sites & uitgevers
- Bulk-import van artikelen, auteurs, taxonomies
- ACF-velden voor specs en metadata
- Periodieke archief-syncs
- Redirects en SEO behouden
Migraties van andere platforms
- Van Magento, Lightspeed, CCV, OpenCart
- Klanten, orders, producten en reviews
- URL-mapping en 301-redirects
- Eenmalige migratie of doorlopende sync
Welke situatie past het meest op jouw catalogus? Ik denk graag mee — gewoon Maarten zelf, geen sales-trechter.
Hoe het werkt
Een WP All Import-traject in 4 stappen
- 01
Audit & feed-check
Welke feed, welke structuur, welk volume, hoe vaak wijzigt het. Server-resources, bestaande import-sets en pijnpunten in kaart. Lijst met quick wins en grotere verbeterpunten.
- 02
Concreet voorstel
Import-architectuur (full vs delta), custom PHP-helpers, cron-strategie, validatie en monitoring. Met scope per blok zodat we gefaseerd kunnen werken.
- 03
Bouwen op staging
Import-sets eerst op staging tegen echte feeds, dry-runs voor elke grote wijziging, performance-meting. Demo per sprint, geen verrassingen bij go-live.
- 04
Live & monitoring
Deploy met rollback, monitoring op runtime, errors en feed-integriteit, alerts in Slack of Teams. Optionele retainer voor doorontwikkeling en nieuwe import-sets.
Klaar om de eerste stap te zetten? Ik denk graag mee — gewoon Maarten zelf, geen sales-trechter.
Waarom Maarten
Eén ervaren WordPress-developer voor zware imports. Geen bureau.
Ik werk al jaren met WP All Import — van eenvoudige content-imports tot WooCommerce-catalogi met tienduizenden varianten, ACF-relaties en leverancier-feeds die elk hun eigen rariteiten hebben. Die ervaring zit in elke beslissing: welke helper je in PHP zet, wanneer delta meer oplevert dan full, en welke monitoring je nodig hebt om er niet meer naar te hoeven kijken.
Geen accountmanager. Geen tickets die zwerven tussen developer en sysadmin. Je werkt direct met de persoon die de mapping schrijft, de cron instelt en de monitoring live zet — met eerlijk advies, ook als dat betekent: "deze import-set kunnen we beter helemaal opnieuw bouwen".
Diep met WP All Import Pro
Inclusief add-ons voor WooCommerce, ACF, User en Linked Records.
Korte lijnen
Direct contact met de developer, zonder accountmanager ertussen.
Schone aanpak
Git, staging, dry-runs, hash-based delta en rollback — ook in bestaande sites.
Eerlijk advies
Soms refactor, soms rebuild, soms 'eerst monitoring, dan optimaliseren'. Eerlijk benoemd.
FAQ
Veelgestelde vragen over WP All Import
Wat doet WP All Import precies?
Wat doet WP All Import precies?
WP All Import (Pro) leest XML, CSV of JSON-feeds, mapt velden op WordPress-posts, WooCommerce-producten, ACF-velden of custom post types, en draait dat geautomatiseerd via cron. Het is veruit de meest flexibele import-oplossing voor WordPress — mits je weet hoe je hem voor grote volumes en complexe structuren inricht.
Vanaf welk volume heb ik echt een specialist nodig?
Vanaf welk volume heb ik echt een specialist nodig?
Tot ~5.000 records met een schone feed kun je ver komen met de standaard interface. Boven 10k records, of met variable products, ACF-relaties, meerdere talen of een grillige leverancier-feed, gaat het over architectuur: delta-imports, chunked processing, custom PHP-functies en monitoring. Dan loont een ervaren developer zich snel terug.
Wat is een delta-import en waarom is dat belangrijk?
Wat is een delta-import en waarom is dat belangrijk?
Een delta-import verwerkt alleen records die echt zijn gewijzigd sinds de vorige run — via een SHA-hash van het record of een 'updated_at' veld. In plaats van elke nacht 80k producten opnieuw te schrijven (uren werk, page-cache leeg), verwerk je alleen de ~200 die veranderden. Vaak in minuten in plaats van uren.
Kun je WooCommerce variable products importeren?
Kun je WooCommerce variable products importeren?
Ja. Variable products met varianten, attributen als pa_-taxonomies, gallery images, downloads, prijzen per rol en stock per locatie. Inclusief parent/child-mapping op een unique key (SKU of EAN), defaults voor missing variants en een check die rapporteert als een variant geen ouder vindt.
Werkt het met ACF Pro, repeater en flexible content?
Werkt het met ACF Pro, repeater en flexible content?
Ja. ACF Pro velden inclusief repeater, flexible content, post-object en relationship zijn allemaal mappable — vaak via een custom helper die de feed-structuur netjes vertaalt naar het ACF-schema. Editors hoeven achteraf niets meer te koppelen.
Hoe ga je om met images bij grote imports?
Hoe ga je om met images bij grote imports?
Image-hash check zodat dezelfde foto niet elke nacht opnieuw wordt gedownload, bestaande media library hergebruiken op filename of meta, en optioneel een image-CDN (Cloudflare Images, Bunny) ervoor met AVIF/WebP. Bij 80k producten scheelt dat dagelijks honderden GB's bandbreedte en uren importtijd.
Wat als de leverancier-feed kapot is of een veld hernoemt?
Wat als de leverancier-feed kapot is of een veld hernoemt?
Schema-validatie draait vóór de import. Mist een verplichte kolom of klopt een type niet, dan slaat de run af zonder schrijven en gaat er een Slack-alert naar #ops. De vorige snapshot blijft live. Geen €0-prijzen, geen verdwenen producten, geen weekend opruimen.
Kan ik imports geautomatiseerd laten draaien?
Kan ik imports geautomatiseerd laten draaien?
Ja, via WP-Cron óf veel beter via server-cron met WP-CLI. WP-CLI draait buiten de browser, heeft eigen memory- en time-limits, is hervatbaar en bij voorkeur gekoppeld aan een monitoring-service die alert geeft als een run niet draait of te lang duurt.
Doe je ook eenmalige migraties via WP All Import?
Doe je ook eenmalige migraties via WP All Import?
Ja. Vanuit Magento-exports, Lightspeed, CCV, OpenCart of oude WooCommerce-CSV's — met URL-mapping, 301-redirects, behoud van slugs op SKU/EAN en SEO-velden mee. Eenmalig of als doorlopende sync, afhankelijk van de situatie.
Werk je in losse trajecten of langere opdrachten?
Werk je in losse trajecten of langere opdrachten?
Allebei. Een audit + sprint van twee weken om een rammelende import-set te stabiliseren en delta-imports in te bouwen gebeurt veel. Net zoals langere trajecten waarin we alle imports inrichten, monitoring opzetten en eens per kwartaal de stack tegen het licht houden.
Sparren over je WP All Import setup?
Stabiele feeds, snellere imports, minder handwerk.
Ik kijk mee in je import-sets, feed-structuur en cron-setup en schets een aanpak waarmee je catalogus draait zonder dat iemand er nog naar hoeft te kijken.
