{"id":228,"date":"2026-01-20T00:00:00","date_gmt":"2026-01-19T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/nl\/woocommerce-10-5-komt-eraan-dit-verandert-er-voor-developers\/"},"modified":"2026-01-20T00:00:00","modified_gmt":"2026-01-19T23:00:00","slug":"woocommerce-10-5-komt-eraan-dit-verandert-er-voor-developers","status":"publish","type":"post","link":"https:\/\/helloblog.io\/nl\/woocommerce-10-5-komt-eraan-dit-verandert-er-voor-developers\/","title":{"rendered":"WooCommerce 10.5 komt eraan: dit verandert er voor developers (performance, API, checkout en belasting)"},"content":{"rendered":"\n<p>WooCommerce 10.5 staat voor de deur en is er eentje waar je als developer echt even naar wilt kijken. Niet alleen vanwege wat UI- en bugfixes, maar vooral door een fundamentele wijziging in hoe orderdata richting de Analytics-tabellen gaat. Daarnaast zitten er API-advisories in (met mogelijk breaking impact voor extensies), plus een aantal performance-experimenten die duidelijk maken waar WooCommerce heen wil.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Releaseplanning (en hoe je nu al test)<\/h2>\n\n\n\n<p>Op maandag 12 januari 2026 is de Feature Freeze ingegaan. Vanaf dat moment draait de focus vooral op testen en stabiliseren richting de release.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>\u2705 Feature Freeze &#8211; toegevoegd: 12 januari 2026<\/li>\n\n\n<li>\u2705 WooCommerce 10.5 Beta 1 &#8211; released: 19 januari 2026<\/li>\n\n\n<li>\u2705 WooCommerce 10.5 Beta 2 &#8211; released: 26 januari 2026<\/li>\n\n\n<li>\u23f3 WooCommerce 10.5 final &#8211; gepland: 4 februari 2026<\/li>\n\n<\/ul>\n\n\n\n<p>Wil je de beta\u2019s testen, dan is het advies om de <a href=\"https:\/\/woocommerce.com\/products\/woocommerce-beta-tester\/\">WooCommerce Beta Tester plugin<\/a> te gebruiken. Daarmee kun je beta-versies van WooCommerce in een testomgeving installeren zonder handmatig met zip-bestanden te slepen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wat er nieuw is in WooCommerce 10.5 (de highlights)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1) Grote wijziging: Analytics-import van orders gaat van \u2018per event\u2019 naar batches<\/h3>\n\n\n\n<p>De grootste verandering in 10.5 zit in de manier waarop WooCommerce orderdata importeert naar de Analytics-tabellen. Tot nu toe werd bij praktisch ieder order-event een analytics import job gestart via ActionScheduler. Dat werkte asynchroon, maar op drukke shops leverde het in de praktijk enorme backlogs op (denk: 10.000+ actions). Het gevolg: zware performance-degradatie, database contention en een merkbaar tragere site.<\/p>\n\n\n\n<p>In 10.5 schakelt WooCommerce standaard over naar <strong>Scheduled Imports<\/strong>: een batch-gewijze refresh van analytics data <strong>elke 12 uur<\/strong>, waarbij er <strong>100 orders per batch<\/strong> verwerkt worden. Beide waarden zijn aanpasbaar via nieuwe filters:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><code>woocommerce_analytics_import_interval<\/code> &#8211; bepaalt het interval van de scheduled import (default: 12 uur).<\/li>\n\n\n<li><code>woocommerce_analytics_regenerate_batch_size<\/code> &#8211; bepaalt het aantal orders per batch (default: 100).<\/li>\n\n<\/ul>\n\n\n\n<p>Belangrijk detail: met deze aanpak daalt het aantal scheduled actions drastisch en neemt de databasebelasting af. Tegelijkertijd krijgen shop owners meer zicht op de status, en blijft het mogelijk om imports handmatig te triggeren wanneer dat nodig is. (Zie PR <a href=\"https:\/\/github.com\/woocommerce\/woocommerce\/pull\/61603\">#61603<\/a>.)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2) Checkout block: betere verzendopties-UI (met thumbnails en packages) + fix voor Ship\/Pickup sync<\/h3>\n\n\n\n<p>De shipping options in het Checkout block krijgen een UI-update: als er meerdere packages zijn (wat bijvoorbeeld vaker gebeurt bij subscription-producten), dan toont WooCommerce nu product thumbnails en gebruikt het bordered containers voor duidelijkere afbakening.<\/p>\n\n\n\n<p>Daarnaast is er een bug opgelost waarbij verzendmethodes niet goed synchroniseerden als je wisselde tussen Ship en Pickup delivery options. (Zie PR <a href=\"https:\/\/github.com\/woocommerce\/woocommerce\/pull\/61625\">#61625<\/a>.)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3) Orders bekijken wordt robuuster bij legacy of corrupte tax data<\/h3>\n\n\n\n<p>WooCommerce 10.5 verbetert de betrouwbaarheid bij het openen\/bekijken van orders waarin legacy of corrupte belastingdata zit. Concreet: in sommige oude of afwijkende situaties waren tax values opgeslagen als floats\/strings in plaats van arrays. Dat kan leiden tot fouten of onverwacht gedrag in order detail-schermen en verwerking.<\/p>\n\n\n\n<p>De fix voegt backward-compatible handling toe voor alle order item types (producten, shipping, fees), en probeert tax rate IDs slim af te leiden op basis van de ordercontext. Voor extensies en maatwerk is er een extra filter waarmee je eigen conversielogica kunt inpluggen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><code>woocommerce_order_item_legacy_tax_conversion<\/code> &#8211; filter voor custom conversie van legacy tax data.<\/li>\n\n<\/ul>\n\n\n\n<p>(Zie PR <a href=\"https:\/\/github.com\/woocommerce\/woocommerce\/pull\/62271\">#62271<\/a>.)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4) Select2-styling wordt scoped zodat het niet meer \u2018lekt\u2019 naar andere plugins<\/h3>\n\n\n\n<p>WooCommerce laadt Select2-styles (Select2 is de bekende JS dropdown\/autocomplete library) die in sommige admin-interfaces ook andere plugins kunnen raken. In 10.5 worden die styles scoped via <code>:where(.woocommerce)<\/code>.<\/p>\n\n\n\n<p>De keuze voor <code>:where()<\/code> is relevant: die pseudo-class houdt specificity op nul. Dat betekent dat bestaande custom overrides doorgaans blijven werken, terwijl je tegelijk voorkomt dat WooCommerce Select2-styling andere plugin-UI\u2019s be\u00efnvloedt. (Zie PR <a href=\"https:\/\/github.com\/woocommerce\/woocommerce\/pull\/61956\">#61956<\/a>.)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5) Nieuwe filter: <code>woocommerce_shipping_tax_class<\/code> voor dynamische shipping tax-berekening<\/h3>\n\n\n\n<p>Er komt een nieuwe filter bij: <code>woocommerce_shipping_tax_class<\/code>. Daarmee kun je de shipping tax rate dynamisch bepalen op basis van cart contents, klantdata en locatie.<\/p>\n\n\n\n<p>Dit is vooral interessant voor complexere belastingregels, waaronder scenario\u2019s zoals je die in Nederland kunt tegenkomen. Een voorbeeld dat expliciet genoemd wordt: shipping tax berekenen op basis van het \u2018predominante\u2019 (meest voorkomende\/leidende) tax rate in de cart. (Zie PR <a href=\"https:\/\/github.com\/woocommerce\/woocommerce\/pull\/62040\">#59512<\/a>.)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">API changes &#038; developer advisories (hier kun je regressies verwachten)<\/h2>\n\n\n\n<p>Naast de feature-updates bevat 10.5 een aantal wijzigingen die al in aparte developer posts zijn uitgelicht. Hieronder de kernpunten, met de links naar de volledige advisories voor de details.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>WC REST API: betere decoding van special characters in product variation attributes. Volledige context: https:\/\/developer.woocommerce.com\/2026\/01\/14\/wc-rest-api-fixes-for-product-variation-attributes-with-special-characters-in-woocommerce-10-5\/<\/li>\n\n\n<li>De <code>AccessiblePrivateMethods<\/code> trait wordt verwijderd. Deze zat in de <code>Internal<\/code> namespace (dus nadrukkelijk niet bedoeld voor public use), maar extensies die \u2018m toch gebruiken kunnen hierdoor breken. Details: https:\/\/developer.woocommerce.com\/2026\/01\/15\/removal-of-the-accessibleprivatemethods-trait-in-woocommerce-10-5\/<\/li>\n\n\n<li>Product permalinks gebaseerd op categorie\u00ebn worden aangepast: WooCommerce gaat de diepste categorie prioriteren voor consistentere URLs en SEO, en dit raakt alleen specifieke permalink-structuren. Details: https:\/\/developer.woocommerce.com\/2026\/01\/13\/product-permalink-changes-coming-in-woocommerce-10-5\/<\/li>\n\n\n<li>Op variable product pages wordt de Add to Cart-knop standaard disabled totdat het variation script volledig geladen is. Op trage verbindingen voorkom je zo dat gebruikers te vroeg klikken en submissions falen. Details: https:\/\/developer.woocommerce.com\/2026\/01\/16\/add-to-cart-button-disabled-by-default-in-variable-products-in-woocommerce-10-5\/<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Performance improvements (inclusief experimenten)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Experimentele REST API cache<\/h3>\n\n\n\n<p>WooCommerce 10.5 introduceert een <strong>nieuwe experimentele REST API cache<\/strong> die je op elk endpoint in de WC REST API kunt toepassen. Er is nog niet alle informatie gedeeld; volgens de aankondiging volgt meer uitleg (ook over testen) richting de 10.5 release.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Verbeteringen aan cached variation prices + utility class voor callbacks<\/h3>\n\n\n\n<p>Cached variation prices krijgen verbeteringen, en er komt een nieuwe utility class voor het werken met callbacks. Voor de volledige technische uitwerking: https:\/\/developer.woocommerce.com\/2026\/01\/08\/variation-prices-caching-improvements-in-woocommerce-10-5\/<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Experimentele Product Object Caching (per request)<\/h3>\n\n\n\n<p>Er wordt ook een <strong>experimentele Product Object Caching<\/strong> feature ge\u00efntroduceerd. Het idee: tijdens \u00e9\u00e9n request product instances cachen zodat je niet meerdere keren hetzelfde product opnieuw uit de database hoeft te laden. Dat kan vooral op drukke pagina\u2019s met veel product-resolving (filters, loops, blocks) merkbaar schelen.<\/p>\n\n\n\n<p>De implementatie zit in PR https:\/\/github.com\/woocommerce\/woocommerce\/pull\/62041 en er is een aparte uitlegpost met details: https:\/\/developer.woocommerce.com\/2026\/01\/19\/experimental-product-object-caching-in-woocommerce-10-5\/<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Product Filters: cache-data fix + transients cleanup update<\/h3>\n\n\n\n<p>Er is een performance-fix gedaan rondom de cache-data van Product Filters. In sommige gevallen werd die data niet goed gezet en geladen, wat ertoe kon leiden dat de database overspoeld werd met filter data cache. Dat is vooral een probleem bij stores met grote catalogi.<\/p>\n\n\n\n<p>WooCommerce past ook de transients cleanup tool aan: wanneer die draait, wordt nu ook de filter data cache opgeschoond. Praktisch betekent dit: gebruiken klanten het Product Filters block en zien ze nog steeds performanceproblemen, dan kan dit de oorzaak zijn &#8211; en dan is het opschonen van WooCommerce transients de aangewezen oplossing. (Zie PR <a href=\"https:\/\/github.com\/woocommerce\/woocommerce\/pull\/62575\">#62575<\/a>.)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Changelog<\/h2>\n\n\n\n<p>De volledige changelog staat in de WooCommerce repository: https:\/\/github.com\/woocommerce\/woocommerce\/blob\/10.5.0-beta.1\/plugins\/woocommerce\/readme.txt<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Waar ik als developer op zou letten bij het testen<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Shops met veel order-events: check of de nieuwe Scheduled Imports je ActionScheduler-queue en database load merkbaar rustiger maakt (en of je eigen reporting\/analytics hooks geen onverwachte timing aannames hebben).<\/li>\n\n\n<li>Checkout block met subscriptions\/meerdere packages: verifieer de UX (thumbnails\/containers) en test switchen tussen Ship en Pickup.<\/li>\n\n\n<li>Extensies die ooit \u2018even snel\u2019 iets uit <code>Internal<\/code> hebben gebruikt: zoek expliciet op <code>AccessiblePrivateMethods<\/code> en controleer je compatibiliteit.<\/li>\n\n\n<li>REST API consumers: test variation attributes met speciale tekens (encoding\/decoding).<\/li>\n\n\n<li>Sites met custom permalink-structuren voor producten op basis van categorie: valideer dat URL\u2019s nog overeenkomen met je SEO-setup (met name door de \u2018deepest category\u2019-prioriteit).<\/li>\n\n\n<li>Performance bij grote catalogi met Product Filters block: check of transients opschonen effect heeft, en of de cache zich netjes gedraagt na de fix.<\/li>\n\n<\/ul>\n\n\n<div class=\"references-section\">\n                <h2>Referenties \/ Bronnen<\/h2>\n                <ul class=\"references-list\"><li><a href=\"https:\/\/developer.woocommerce.com\/2026\/01\/20\/woocommerce-10-5-whats-coming-for-developers\/\" target=\"_blank\" rel=\"noopener noreferrer\">WooCommerce 10.5: What&#039;s coming for developers Release Posts<\/a><\/li><li><a href=\"https:\/\/developer.woocommerce.com\/2026\/01\/14\/wc-rest-api-fixes-for-product-variation-attributes-with-special-characters-in-woocommerce-10-5\/\" target=\"_blank\" rel=\"noopener noreferrer\">WC REST API fixes for product variation attributes with special characters in WooCommerce 10.5<\/a><\/li><li><a href=\"https:\/\/developer.woocommerce.com\/2026\/01\/15\/removal-of-the-accessibleprivatemethods-trait-in-woocommerce-10-5\/\" target=\"_blank\" rel=\"noopener noreferrer\">Removal of the AccessiblePrivateMethods trait in WooCommerce 10.5<\/a><\/li><li><a href=\"https:\/\/developer.woocommerce.com\/2026\/01\/13\/product-permalink-changes-coming-in-woocommerce-10-5\/\" target=\"_blank\" rel=\"noopener noreferrer\">Product permalink changes coming in WooCommerce 10.5<\/a><\/li><li><a href=\"https:\/\/developer.woocommerce.com\/2026\/01\/16\/add-to-cart-button-disabled-by-default-in-variable-products-in-woocommerce-10-5\/\" target=\"_blank\" rel=\"noopener noreferrer\">Add to cart button disabled by default in variable products in WooCommerce 10.5<\/a><\/li><li><a href=\"https:\/\/developer.woocommerce.com\/2026\/01\/08\/variation-prices-caching-improvements-in-woocommerce-10-5\/\" target=\"_blank\" rel=\"noopener noreferrer\">Variation prices caching improvements in WooCommerce 10.5<\/a><\/li><li><a href=\"https:\/\/developer.woocommerce.com\/2026\/01\/19\/experimental-product-object-caching-in-woocommerce-10-5\/\" target=\"_blank\" rel=\"noopener noreferrer\">Experimental product object caching in WooCommerce 10.5<\/a><\/li><li><a href=\"https:\/\/woocommerce.com\/products\/woocommerce-beta-tester\/\" target=\"_blank\" rel=\"noopener noreferrer\">WooCommerce Beta Tester<\/a><\/li><li><a href=\"https:\/\/github.com\/woocommerce\/woocommerce\/pull\/61603\" target=\"_blank\" rel=\"noopener noreferrer\">WooCommerce PR #61603<\/a><\/li><li><a href=\"https:\/\/github.com\/woocommerce\/woocommerce\/pull\/61625\" target=\"_blank\" rel=\"noopener noreferrer\">WooCommerce PR #61625<\/a><\/li><li><a href=\"https:\/\/github.com\/woocommerce\/woocommerce\/pull\/62271\" target=\"_blank\" rel=\"noopener noreferrer\">WooCommerce PR #62271<\/a><\/li><li><a href=\"https:\/\/github.com\/woocommerce\/woocommerce\/pull\/61956\" target=\"_blank\" rel=\"noopener noreferrer\">WooCommerce PR #61956<\/a><\/li><li><a href=\"https:\/\/github.com\/woocommerce\/woocommerce\/pull\/62040\" target=\"_blank\" rel=\"noopener noreferrer\">WooCommerce PR #62040<\/a><\/li><li><a href=\"https:\/\/github.com\/woocommerce\/woocommerce\/pull\/62575\" target=\"_blank\" rel=\"noopener noreferrer\">WooCommerce PR #62575<\/a><\/li><li><a href=\"https:\/\/github.com\/woocommerce\/woocommerce\/pull\/62041\" target=\"_blank\" rel=\"noopener noreferrer\">WooCommerce PR #62041<\/a><\/li><li><a href=\"https:\/\/github.com\/woocommerce\/woocommerce\/blob\/10.5.0-beta.1\/plugins\/woocommerce\/readme.txt\" target=\"_blank\" rel=\"noopener noreferrer\">WooCommerce 10.5.0-beta.1 readme.txt changelog<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>WooCommerce 10.5 zet een flinke stap in performance en voorspelbaarheid: vooral de nieuwe manier van analytics-import kan op drukke shops duizenden scheduled actions schelen.<\/p>\n","protected":false},"author":21,"featured_media":227,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[63],"tags":[65,29,108,41,10],"class_list":["post-228","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress-ecosysteem","tag-beveiliging","tag-performance","tag-rest-api","tag-woocommerce","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/posts\/228","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/comments?post=228"}],"version-history":[{"count":0,"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/posts\/228\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/media\/227"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/media?parent=228"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/categories?post=228"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/tags?post=228"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}