WooCommerce 10.5: co się zmienia dla developerów i na co uważać przed releasem
WooCommerce 10.5 jest na ostatniej prostej – z punktu widzenia developerów to wydanie jest ciekawe nie dlatego, że dorzuca jedną „dużą” funkcję, tylko dlatego, że porządkuje kilka newralgicznych obszarów: import danych do tabel Analytics, zachowanie checkoutu blokowego, kompatybilność z „brudnymi” danymi podatkowymi w zamówieniach, izolację styli Select2 oraz mechanizmy cache’owania pod wydajność.
Poniżej zebrałem najważniejsze elementy, które w 10.5 warto mieć na radarze podczas testów na stagingu – zwłaszcza jeśli utrzymujesz własne rozszerzenia, modyfikujesz checkout lub opierasz raportowanie na Analytics.
Harmonogram wydania (beta → final)
- Feature Freeze: 12 stycznia 2026
- WooCommerce 10.5 Beta 1: 19 stycznia 2026 (testy przez wtyczkę WooCommerce Beta Tester: https://woocommerce.com/products/woocommerce-beta-tester/)
- WooCommerce 10.5 Beta 2: 26 stycznia 2026 (testy przez wtyczkę WooCommerce Beta Tester: https://woocommerce.com/products/woocommerce-beta-tester/)
- Final release: zaplanowany na 4 lutego 2026
Największa zmiana: import zamówień do tabel Analytics bez zatorów w ActionScheduler
W 10.5 kluczowa jest przebudowa tego, jak WooCommerce zasila tabele Analytics danymi z zamówień. Dotychczas – przy każdym „zdarzeniu” na zamówieniu – odpalany był job importu przez ActionScheduler. Teoretycznie asynchronicznie, praktycznie na zapracowanych sklepach kończyło się to gigantycznymi backlogami (rzędu 10 000+ akcji), mocną degradacją wydajności, contention na bazie danych i odczuwalnymi spowolnieniami całej witryny.
W 10.5 domyślnie wchodzi tryb Scheduled Imports: zamiast importu „na każde zdarzenie”, WooCommerce odświeża dane Analytics co 12 godzin, przetwarzając 100 zamówień na paczkę. Oba parametry da się dostosować filtrami, co jest ważne, jeśli masz specyficzną charakterystykę ruchu lub nietypowe okna synchronizacji.
- Interwał importu (domyślnie 12h): filtr
woocommerce_analytics_import_interval - Rozmiar paczki (domyślnie 100 zamówień): filtr
woocommerce_analytics_regenerate_batch_size
Z perspektywy operacyjnej plus jest też taki, że właściciel sklepu dostaje czytelniejszy status procesu i możliwość ręcznego wyzwolenia importu w dowolnym momencie – a Twoje rozszerzenia nie powinny już „dokładać się” do lawiny akcji w ActionScheduler tylko dlatego, że sklep żyje i zamówienia zmieniają statusy. (PR: https://github.com/woocommerce/woocommerce/pull/61603)
Checkout block: poprawione UI opcji dostawy i synchronizacja Ship/Pickup
W checkoutcie blokowym poprawiono interfejs wyboru wysyłki: gdy zamówienie rozbija się na wiele paczek (szczególnie w kontekście produktów subskrypcyjnych), opcje dostawy mają teraz wyraźniejsze kontenery z obramowaniem i potrafią pokazywać miniatury produktów.
Przy okazji naprawiono błąd, który potrafił rozjechać synchronizację metod dostawy podczas przełączania między opcjami typu „Ship” i „Pickup” (dostawa vs odbiór). Jeśli masz własne integracje around checkout blocks albo hooki reagujące na wybór metody wysyłki, to jest dobry moment, żeby sprawdzić te scenariusze na becie. (PR: https://github.com/woocommerce/woocommerce/pull/61625)
Zamówienia z legacy/corrupted tax data: większa odporność i filtr do własnej konwersji
Kolejna zmiana to twarda poprawka kompatybilnościowa: lepsza niezawodność przy wyświetlaniu zamówień, w których dane podatkowe są „stare” albo uszkodzone – np. wartości podatków były zapisane jako floaty/stringi zamiast oczekiwanych struktur (tablic). W praktyce takie dane potrafią się trafić po migracjach, niestandardowych importach lub po latach utrzymania sklepu.
Fix w 10.5 dodaje wstecznie kompatybilne przetwarzanie dla wszystkich typów pozycji zamówienia (produkty, wysyłka, opłaty), a dodatkowo inteligentnie wnioskuje tax rate IDs na podstawie kontekstu zamówienia. Jeżeli w Twoim ekosystemie potrzebujesz niestandardowej logiki, dostajesz filtr woocommerce_order_item_legacy_tax_conversion, żeby podmienić/rozszerzyć konwersję. (PR: https://github.com/woocommerce/woocommerce/pull/62271)
Select2: style WooCommerce przestają „przeciekać” do interfejsów innych wtyczek
Jeśli kiedykolwiek walczyłeś z sytuacją, w której selektory Select2 były stylowane przez WooCommerce w miejscach, gdzie nie powinny (np. w ekranach admina innych pluginów), to 10.5 jest dobrą wiadomością. Style Select2 ładowane przez WooCommerce są teraz scope’owane przez :where(.woocommerce).
Ważny detal: pseudo-klasa :where() ma zerową specyficzność, więc istniejące nadpisania CSS (custom overrides) nie powinny się „magicznie” złamać, a jednocześnie WooCommerce przestaje wpływać na UI poza swoim kontekstem. (PR: https://github.com/woocommerce/woocommerce/pull/61956)
Nowy filtr woocommerce_shipping_tax_class: dynamiczny VAT dla wysyłki
W 10.5 dochodzi filtr woocommerce_shipping_tax_class, który pozwala dynamicznie wyliczać stawkę podatku dla wysyłki na podstawie zawartości koszyka, danych klienta i lokalizacji. To jest istotne, gdy masz bardziej złożone reguły – np. gdy wysyłka ma przyjmować „dominującą” stawkę VAT z koszyka (częsty wymóg w bardziej skomplikowanych jurysdykcjach; w materiałach jako przykład wskazano m.in. Holandię). (PR: https://github.com/woocommerce/woocommerce/pull/62040)
Zmiany API i advisory, które mogą Cię dotknąć
Oprócz zmian funkcjonalnych, 10.5 niesie kilka punktów „do sprawdzenia”, szczególnie jeżeli rozwijasz integracje oparte o WC REST API albo korzystasz z elementów, które nigdy nie były publicznym API, ale jednak ktoś je użył w rozszerzeniu.
1) WC REST API: poprawne dekodowanie znaków specjalnych w atrybutach wariantów
WC REST API ma teraz poprawnie obsługiwać dekodowanie znaków specjalnych w atrybutach wariantów produktów. Jeśli masz integrację, która tworzy/aktualizuje warianty i operuje na atrybutach z diakrytykami lub znakami spoza ASCII, koniecznie przeleć testy regresji. Pełny opis: https://developer.woocommerce.com/2026/01/14/wc-rest-api-fixes-for-product-variation-attributes-with-special-characters-in-woocommerce-10-5/
2) Usunięcie traitu AccessiblePrivateMethods
Trait AccessiblePrivateMethods zostanie usunięty. Był w przestrzeni nazw Internal, co miało być wyraźnym sygnałem, że nie jest to element do konsumpcji publicznej. Mimo to część rozszerzeń mogła go używać „po cichu” – i tu pojawia się ryzyko BC breaka po aktualizacji do 10.5. Szczegóły: https://developer.woocommerce.com/2026/01/15/removal-of-the-accessibleprivatemethods-trait-in-woocommerce-10-5/
3) Permalinki produktów oparte o kategorie: inny priorytet kategorii (SEO i spójność URL)
Zmienia się sposób wyznaczania permalinków produktów opartych o kategorie: priorytet ma dostać najgłębsza kategoria, co ma poprawić SEO i spójność URL-i. To dotyczy tylko określonych struktur permalinków (tych, które bazują na kategoriach), więc nie każdy sklep to odczuje – ale jeśli masz custom routing, cache po URL albo integracje, które zakładają konkretną ścieżkę kategorii, to jest obowiązkowa pozycja do przejrzenia. Opis zmian: https://developer.woocommerce.com/2026/01/13/product-permalink-changes-coming-in-woocommerce-10-5/
4) Variable product: przycisk Add to Cart zablokowany do czasu pełnego załadowania skryptu wariantów
Na stronach produktów wariantowych WooCommerce dopilnuje teraz, żeby Add to Cart był domyślnie wyłączony, dopóki skrypt wariantów nie załaduje się w całości. Wcześniej – szczególnie na wolniejszych łączach – dało się kliknąć przycisk zanim logika wyboru wariantu się zainicjalizowała, co kończyło się nieudanym submitowaniem formularza. Szczegóły: https://developer.woocommerce.com/2026/01/16/add-to-cart-button-disabled-by-default-in-variable-products-in-woocommerce-10-5/
Wydajność: eksperymentalny cache dla WC REST API i Product Object Caching
W obszarze performance WooCommerce 10.5 zapowiada nowy, eksperymentalny cache dla WC REST API, który ma dać się zastosować do dowolnego endpointu. Na moment publikacji materiałów nie ma jeszcze pełnego opisu „jak testować” – zapowiedziano, że więcej informacji pojawi się bliżej releasu 10.5 – ale warto już teraz wiedzieć, że ten kierunek istnieje i może mieć wpływ na diagnostykę (np. gdy testujesz świeżość danych na API).
Usprawnienia cache’owania cen wariantów + nowa klasa utility dla callbacków
W 10.5 poprawiono również mechanikę cached variation prices oraz dodano nową klasę narzędziową do pracy z callbackami. Jeśli Twoje rozwiązania ingerują w wyliczanie cen wariantów lub opierają się na filtrach cenowych, zajrzyj w szczegóły: https://developer.woocommerce.com/2026/01/08/variation-prices-caching-improvements-in-woocommerce-10-5/
Eksperymentalny Product Object Caching (cache instancji produktu w ramach requestu)
Pojawia się też eksperymentalny Product Object Caching: w skrócie chodzi o cache’owanie instancji produktu w trakcie jednego żądania, tak żeby nie ładować wielokrotnie tych samych danych z bazy. To może dać odczuwalny efekt w miejscach, gdzie ten sam produkt jest „dotykany” przez wiele komponentów w jednym request-cyklu. PR: https://github.com/woocommerce/woocommerce/pull/62041 oraz omówienie: https://developer.woocommerce.com/2026/01/19/experimental-product-object-caching-in-woocommerce-10-5/
Poprawki cache danych Product Filters + czyszczenie transientów
Naprawiono też problemy wydajnościowe związane z cache danych Product Filters, które wcześniej nie były poprawnie ustawiane i ładowane. Efekt uboczny poprzedniego zachowania mógł być bolesny: baza danych potrafiła zostać zasypana cache’em filtrów, a sklepy z dużymi katalogami odczuwały spadki wydajności.
Dodatkowo zaktualizowano narzędzie czyszczące WooCommerce transients (transienty = krótkotrwałe wpisy cache w WordPressie), żeby przy uruchomieniu usuwało również cache danych filtrów. Jeżeli klient używa bloku Product Filters i nadal ma problemy z wydajnością, ta przyczyna jest bardzo prawdopodobna – a rozwiązaniem jest czyszczenie transientów WooCommerce. (PR: https://github.com/woocommerce/woocommerce/pull/62575)
Changelog: pełna lista zmian
Pełny changelog dla 10.5 (dla beta 1) jest dostępny tutaj: https://github.com/woocommerce/woocommerce/blob/10.5.0-beta.1/plugins/woocommerce/readme.txt
Lista kontrolna do testów na stagingu (developer-focused)
- Jeśli sklep ma duży wolumen zamówień: sprawdź zachowanie Analytics po przejściu na Scheduled Imports (czy importy pojawiają się cyklicznie, czy status jest czytelny, czy ręczne uruchomienie działa).
- Jeśli rozszerzenie korzysta z ActionScheduler w obszarze raportowania/analytics: upewnij się, że nie polegasz na starym modelu „job per event”.
- Zweryfikuj checkout blokowy przy wielu paczkach (szczególnie subskrypcje): UI opcji dostawy, miniatury, obramowania, przełączanie Ship/Pickup.
- Przetestuj wyświetlanie i edycję starszych zamówień, zwłaszcza po migracjach: pozycje z podatkami zapisanymi niepoprawnie; jeśli masz własne mapowanie podatków, rozważ użycie filtra
woocommerce_order_item_legacy_tax_conversion. - Jeśli wtyczka ma własne Select2: sprawdź, czy style WooCommerce nie wpływają już na Twoje ekrany (i czy Twoje wcześniejsze override’y nadal działają).
- Jeśli masz złożone reguły podatkowe dla wysyłki: przejrzyj możliwość implementacji na
woocommerce_shipping_tax_class. - Integracje z WC REST API: przetestuj warianty produktów z atrybutami zawierającymi znaki specjalne (encoding/decoding).
- Wyszukaj użycia
AccessiblePrivateMethods: jeśli gdzieś wyciekło do kodu rozszerzenia, przygotuj refaktor (trait znika). - Jeżeli używasz permalinków produktów opartych o kategorie: sprawdź, czy generowane URL-e nie zmienią się po aktualizacji (najgłębsza kategoria).
- Na stronach produktów wariantowych: upewnij się, że Twoje custom JS nie zakłada klikalnego Add to Cart zanim skrypt wariantów wystartuje.
- Jeśli klient używa Product Filters block i narzeka na wydajność: po aktualizacji zweryfikuj stan transientów i zachowanie cache filtrów; rozważ czyszczenie transientów WooCommerce jako element diagnostyki.
Odniesienia / Źródła
- WooCommerce 10.5: What's coming for developers Release Posts
- WC REST API fixes for product variation attributes with special characters in WooCommerce 10.5
- Removal of the AccessiblePrivateMethods trait in WooCommerce 10.5
- Product permalink changes coming in WooCommerce 10.5
- Add to cart button disabled by default in variable products in WooCommerce 10.5
- Variation prices caching improvements in WooCommerce 10.5
- Experimental Product Object Caching in WooCommerce 10.5
- WooCommerce 10.5.0-beta.1 readme.txt changelog
- WooCommerce PR #61603
- WooCommerce PR #61625
- WooCommerce PR #62271
- WooCommerce PR #61956
- WooCommerce PR #62040
- WooCommerce PR #62041
- WooCommerce PR #62575
- WooCommerce Beta Tester
Piotr Kowalski
Programista systemów wbudowanych i specjalista IoT. Rust i C++ to moje ulubione. Interesuje mnie programowanie niskopoziomowe i optymalizacja.
Wszystkie wpisy