WooCommerce ERP / wholesaler API sync
Nasz werdykt
Synchronizacja WooCommerce z API ERP i hurtowni cyklicznymi, idempotentnymi zadaniami: deklaratywne mapowanie pól (EAN/indeks), reguły marży przy zapisie i ochrona stanów ukrywająca niedostępne pozycje. Sklep to cache; źródłem prawdy jest dostawca.
Brief praktyka
Dlaczego to wdrożyliśmy
Sklepy odsprzedające katalog dystrybutora nie są właścicielami prawdy o swoim asortymencie: jest nim dostawca. Wdrożyliśmy ten wzorzec dla sklepu z częściami samochodowymi podpiętego do REST API hurtowni z dziesiątkami tysięcy indeksów: sklep jest cache'em z checkoutem, hurtownia jest źródłem prawdy. Kiedy ta inwersja zostanie przyjęta, katalog, stany magazynowe i ceny utrzymują się same, a dwa kosztowne tryby awarii (sprzedaż tego, czego dostawca nie ma, oraz sprzedaż poniżej przesuniętej ceny zakupu) znikają.
Mechanika, która ma znaczenie
Deklaratywne mapowanie pól kluczowane po EAN i indeksie dostawcy (atrybuty, media i opisy HTML w postaci blobów mapują się na produkty i warianty WooCommerce bez tworzenia duplikatów przy kolejnych przebiegach). Ochrona stanów magazynowych jest celowo prymitywna: dostawca mówi niedostępne, produkt staje się niemożliwy do kupienia, żadnej pomysłowości. Cena to koszt plus reguły marży liczone przy zapisie, więc właściciel steruje rentownością, edytując reguły, a nie tysiące cen.
Blizny z produkcji
Kadencję trzeba rozdzielić: częsty lekki polling stanów magazynowych i cen oraz rzadkie ciężkie odświeżenie pełnego katalogu i mediów. Inaczej stopisz hosting współdzielony. Nie napędzaj tego WP-Cronem odpalanym przy wczytaniu strony, użyj prawdziwych zadań cyklicznych. Cykle muszą być idempotentne (sync, który padnie w połowie, uruchamia się ponownie, a nie jest naprawiany). I pilnuj puchnięcia wp_postmeta: niechlujny mechanizm zapisu psuje wydajność zapytań długo zanim ktokolwiek zacznie podejrzewać synchronizację. Zamień hurtownię na ERP z API (Comarch, Dynamics 365, NetSuite) i kształt jest identyczny.
Dodano: 2026-07-07 · Ostatni przegląd: 2026-07-07