Sklep internetowy oparty na WooCommerce miał zostać połączony z BaseLinkerem tak, aby produkty, ceny i stany magazynowe działały spójnie. Na pierwszy rzut oka zadanie wyglądało standardowo: połączyć produkty sklepu Plantalux z katalogami BaseLinkera i uruchomić synchronizację.
W trakcie pracy okazało się, że problem nie dotyczy tylko samego połączenia. Sklep miał już historię ręcznego dodawania produktów, późniejszego importu z BaseLinkera, tłumaczeń produktów z języka polskiego na rumuński, powtarzających się artykułów i częściowo brakujących kodów EAN.
Dlatego zadanie zmieniło się z prostego podłączenia w pełne uporządkowanie bazy produktowej oraz stworzenie narzędzia, które pokazuje, co naprawdę dzieje się podczas synchronizacji.
Kontekst
Strona działa na WordPressie i WooCommerce. Produkty w sklepie są w języku rumuńskim, a część danych w BaseLinkerze była po polsku. Część produktów została najpierw dodana ręcznie, a później katalog był uzupełniany przez import.
W BaseLinkerze używano kilku katalogów:
- katalogu głównego
- katalogu TM
- dodatkowego katalogu
Zgodnie z logiką klienta identyczne produkty różnych marek mogły mieć ten sam artykuł. Kod EAN dla każdego produktu musiał jednak być unikalny.
To ważny szczegół, ponieważ WooCommerce oczekuje unikalnych artykułów, a BaseLinker najlepiej działa, gdy produkty są powiązane za pomocą wiarygodnego, unikalnego kodu.
Problem początkowy
W sklepie pojawiały się komunikaty o zdublowanych artykułach. Część produktów nie miała EAN. Część produktów miała EAN w różnych polach, ale BaseLinker widział tylko jedno z nich.
Nie było też jasne:
- które produkty są już na stronie
- które produkty są tylko w BaseLinkerze
- które produkty są połączone ze sklepem
- których produktów nie można łączyć automatycznie
- czy BaseLinker rzeczywiście synchronizuje ceny i stany
- dlaczego część produktów po synchronizacji otrzymuje zerowy stan magazynowy
Osobnym problemem było to, że w panelu WooCommerce nie było wygodnego sposobu, aby zobaczyć rzeczywisty stan synchronizacji. BaseLinker mógł pokazywać, że operacja została wykonana, ale po stronie sklepu nie było widać, czy zapytanie faktycznie dotarło do WordPressa i co dokładnie zostało zmienione. Oficjalna wtyczka BaseLinkera nie przekazuje administratorowi sklepu informacji o stanie synchronizacji.
Co zrobiliśmy najpierw
Pierwszym krokiem było wyeksportowanie pełnej listy produktów ze sklepu przez WP All Export. Eksport zawierał 1455 produktów.
Następnie sprawdziliśmy:
- czy występują duplikaty EAN
- które produkty nie mają EAN
- które produkty można znaleźć w katalogach BaseLinkera
- które produkty mają takie same artykuły
- które artykuły tworzą pary produktów
- które kody EAN powtarzają się w różnych katalogach
Okazało się, że część produktów bez EAN w rzeczywistości ma odpowiednie wartości w plikach BaseLinkera. Dla tych produktów przygotowaliśmy osobne pliki do uzupełnienia EAN w WooCommerce.
EAN trzeba było zapisać w dwóch polach:
- standardowym polu WooCommerce dla globalnego kodu produktu
- dodatkowym polu używanym przez BaseLinkera
Po sprawdzeniu starej bazy danych ustaliliśmy, że właściwe dodatkowe pole ma klucz _et_gtin.
Praca z produktami bez EAN
Najpierw znaleźliśmy 34 produkty, dla których EAN można było odtworzyć z dostarczonych plików BaseLinkera. Później klient dodał jeszcze jeden katalog i udało się znaleźć kolejne 19 kodów EAN.
Po dodatkowej weryfikacji okazało się, że nie wszystkie te produkty można aktualizować automatycznie. Część z nich miała konflikty kodów EAN albo wymagała ręcznego sprawdzenia.
Dlatego produkty z ryzykiem zostały przeniesione do szkiców, aby nie tworzyć błędnych powiązań i nie uruchamiać nieprawidłowej synchronizacji.
Dlaczego nie można było po prostu połączyć wszystkiego automatycznie
W BaseLinkerze były produkty, w których jeden EAN występował więcej niż raz. Były też produkty, które zgadzały się tylko po artykule, ale miały różne EAN.
Dla takiego sklepu automatyczne łączenie po artykule jest niebezpieczne, ponieważ artykuł może powtarzać się w parze produktów. W tym projekcie wiarygodnym kluczem do masowego łączenia był właśnie EAN.
Podzieliliśmy produkty na grupy:
- bezpieczne do masowego połączenia
- ze zdublowanym EAN
- znalezione tylko po artykule
- szkice bez EAN
- produkty wymagające ręcznego sprawdzenia
Dla bezpiecznych produktów przygotowaliśmy osobne pliki powiązań dla każdego katalogu BaseLinkera.
Masowe łączenie produktów
Po przygotowaniu pliki powiązań zostały załadowane do BaseLinkera.
Wynik:
- w katalogu głównym połączono 1112 produktów
- w katalogu TM połączono 288 produktów
- w dodatkowym katalogu połączono 5 produktów
Łącznie wiarygodnie połączono 1405 produktów z 1455.
50 produktów pozostało bez automatycznego połączenia, ponieważ wymagają ręcznej weryfikacji. Nie były to przypadkowe błędy, tylko pozycje, których nie można było bezpiecznie podłączyć masowo.
Sprawdzenie synchronizacji
Po połączeniu produktów uruchomiliśmy synchronizację cen i stanów z BaseLinkera.
BaseLinker zaczął wysyłać aktualizacje do sklepu. Część produktów aktualizowała się poprawnie, ale podczas operacji masowych pojawiły się błędy odpowiedzi serwera:
- pusta odpowiedź
- błąd 502
- błąd 503
- przerwanie odpowiedzi serwera
To pokazało, że połączenie między BaseLinkerem i sklepem działa, ale serwer nie zawsze stabilnie obsługuje masowe aktualizacje.
Osobno sprawdziliśmy sytuację z produktem, który po synchronizacji stał się niedostępny. Okazało się, że WooCommerce faktycznie otrzymał stan 0. Problem nie był więc w wyświetlaniu produktu na stronie, tylko w tym, jaki stan przyszedł z BaseLinkera albo który magazyn został wybrany jako źródło stanów.
Dlaczego potrzebna była własna wtyczka
Standardowy panel WooCommerce nie pokazuje, co dokładnie dzieje się podczas synchronizacji.
Potrzebowaliśmy widzieć:
- czy zapytanie BaseLinkera dotarło do WordPressa
- czy WooCommerce zastosował aktualizację
- czy zmieniła się cena
- czy zmienił się stan magazynowy
- który użytkownik API wykonał działanie
- który produkt otrzymał aktualizację
- czy wystąpił błąd po stronie WordPressa
- czy problem wystąpił jeszcze zanim zapytanie dotarło do strony
Na początku próbowaliśmy opierać się na plikach powiązań, ale to nie dawało uczciwej odpowiedzi na najważniejsze pytanie: czy produkt naprawdę synchronizuje się teraz.
Dlatego podjęliśmy decyzję o stworzeniu osobnej wtyczki do diagnostyki na żywo.
Rozwiązanie: Aroks BaseLinker Debugger
Dla projektu powstała mała wtyczka Aroks BaseLinker Debugger.
Nie importuje ręcznych plików i nie wyciąga wniosków ze starych list powiązań. Wtyczka pokazuje tylko to, co WordPress rzeczywiście zobaczył podczas pracy BaseLinkera.
Wtyczka dodaje do panelu WooCommerce:
- kolumnę ze stanem synchronizacji
- filtr produktów według stanu
- osobny blok w karcie produktu
- dziennik ostatnich zdarzeń
Główne stany:
- produkt został pomyślnie zsynchronizowany
- zapytanie było, ale potrzebna jest weryfikacja
- brak żywego śladu synchronizacji
W karcie produktu widać:
- aktualny stan magazynowy
- status dostępności
- czy włączone jest zarządzanie stanem
- aktualną cenę
- ostatnią zmianę ceny
- ostatnią zmianę stanu
- ostatnie zapytanie z BaseLinkera
- ostatni błąd, jeśli wystąpił
Pobierz wtyczkę Aroks BaseLinker Debugger w sklepie Aroks Digital Kits.
Co pokazała diagnostyka
Po uruchomieniu wtyczki stało się jasne, że większość produktów synchronizuje się poprawnie. Część produktów nie miała jednak żywego śladu synchronizacji.
Przeanalizowaliśmy te produkty i otrzymaliśmy jasny obraz:
- 19 produktów było szkicami bez EAN
- 18 produktów miało EAN, ale nie było połączonych w BaseLinkerze z powodu konfliktów
- 13 produktów zgadzało się tylko po artykule, ale miało inny EAN
- 5 produktów było połączonych, ale miało zerowy stan i nie otrzymywało nowej aktualizacji
Dzięki temu stało się jasne, że problem nie leży w jednym miejscu. Część kwestii dotyczyła danych, część ustawień magazynów w BaseLinkerze, a część stabilności serwera podczas masowych aktualizacji.
Rezultat
W wyniku pracy:
- katalog sklepu został porównany z trzema katalogami BaseLinkera
- znaleziono i częściowo odtworzono brakujące EAN
- wykryto produkty ze zdublowanymi EAN
- przygotowano bezpieczne masowe połączenie produktów
- połączono 1405 produktów z 1455
- problematyczne produkty podzielono na osobne grupy do ręcznej weryfikacji
- sprawdzono działanie synchronizacji cen i stanów
- wykryto ograniczenia serwera podczas masowych aktualizacji
- stworzono własną wtyczkę do kontroli synchronizacji na żywo
Najważniejszy rezultat: klient otrzymał nie tylko połączenie z BaseLinkerem, ale zrozumiały system kontroli. Teraz można zobaczyć, które produkty naprawdę się synchronizują, które wymagają uwagi i gdzie dokładnie szukać przyczyny problemu.
Co klient otrzymał na końcu
Połączenie BaseLinkera ze sklepem internetowym nie zawsze jest tylko kwestią ustawień. Jeśli sklep ma już historię ręcznego uzupełniania, importów, tłumaczeń, powtarzających się artykułów i różnych źródeł produktów, najpierw trzeba uporządkować dane.
W tym projekcie przeszliśmy drogę od sprawdzenia EAN i katalogów produktowych do stworzenia własnego narzędzia diagnostycznego. To pozwoliło nie zgadywać, ale widzieć faktyczny obraz: co jest połączone, co się synchronizuje, co nie dochodzi do WordPressa i co wymaga ręcznej decyzji.
Takie podejście zmniejsza ryzyko błędnych aktualizacji, nieprawidłowych stanów i duplikowania produktów. Daje też klientowi większą kontrolę nad sklepem i sprawia, że dalsza praca z BaseLinkerem jest przewidywalna.





