Klient zgłosił pilny problem z działaniem swojego sklepu internetowego na WooCommerce. Po zaimportowaniu produktów z wariantami (np. odzież z różnymi rozmiarami) przez złą konfigurację AJAX, warianty produktów (rozmiary) nie były poprawnie przesyłane do WooCommerce. W rezultacie, rozmiar produktu nie pojawiał się w zamówieniu, a koszyk wyświetlał produkt bez wariantu co skutkowało brakiem informacji o rozmiarze bluzy/koszulki jaką klient zamówił.
Problem pojawił się po nieudanej implementacji przez zewnętrzną agencję, która zaprojektowała stronę i zaimplementowała funkcje sklepu. Brak komunikacji z agencją spowodował, że musiałem samodzielnie zająć się naprawą błędów, a zadanie to stało się wyjątkowo trudne z powodu źle zapisanego kodu i nieprawidłowego umiejscowienia funkcji.
Opis problemu:
Po zaimportowaniu produktów, klient zauważył, że warianty produktów (np. różne rozmiary odzieży) nie były przesyłane do WooCommerce, co powodowało, że do koszyka trafiał produkt główny, a nie wybrany wariant (np. rozmiar L). Ten błąd dotyczył także integracji z BaseLinkerem, ponieważ brak przesyłania wariantów utrudniał prawidłową synchronizację zamówień.
Przegląd sytuacji:
Zgłoszenie
Klient zgłosił problem, wskazując, że po wybraniu wariantu (np. rozmiaru) do koszyka trafiał produkt główny, a nie wariant, co prowadziło do braku danych o rozmiarze zamówionej odzieży.
Brak kompetencji agencji
Zewnętrzna agencja, która stworzyła stronę, zapisała funkcję odpowiadającą za przesyłanie wariantów do WooCommerce w pliku pośród masy innych funkcji, nie podpisując jakkolwiek działania tego kodu. Funkcja ta nie została napisana w prawidłowy sposób, przez co, przesyłanie danych do koszyka z wykorzystaniem AJAX działało nieprawidłowo.
Brak kontaktu z agencją
Niestety, ponieważ klient nie mógł skontaktować się z agencją (odrzucanie telefonu), musiałem samodzielnie przejrzeć ponad 15 tysięcy linii kodu, aby zlokalizować źródło błędu. Po długich poszukiwaniach odkryłem, że funkcja odpowiedzialna za przesyłanie wariantów nie określała rzeczy takich jak warianty, a jedynie jeden stały produkt.
Diagnoza:
Nieprawidłowe przesyłanie danych wariantu
Skrypt AJAX, który obsługiwał proces dodawania produktów do koszyka, nie przekazywał variation_id
oraz atrybutów wariantu (np. rozmiaru). To powodowało, że WooCommerce traktował produkt bez wariantu, co prowadziło do nieprawidłowego przesyłania danych do BaseLinker’a oraz brak informacji o wybranym przez kupującego rozmiarze.
Brak synchronizacji z BaseLinkerem
Brak poprawnego przesyłania wariantów produktów do WooCommerce utrudniał synchronizację zamówień z BaseLinkerem, co prowadziło do błędów przy realizacji zamówień i dostawach.
Moje działania:
Zlokalizowanie błędu i poprawienie konfiguracji AJAX
Po przeglądzie kodu, zidentyfikowałem, że funkcja odpowiedzialna za przesyłanie produktu do koszyka nie zawierała w sobie danych na temat wariantu produktu, co powodowało brak prawidłowej komunikacji z WooCommerce. Funkcję przeniosłem do odpowiedniego pliku i poprawiłem ją w poprawny sposób tak, aby dane wariantów mogły być poprawnie przesyłane.
Problem znajdował się w tym miejscu:
Oto poprawiona funkcja AJAX:
Przeniesienie funkcji do odpowiedniego pliku
Funkcję odpowiedzialną za przesyłanie wariantów przeniosłem do pliku, który został określony do obsługi AJAX-a w koszyku. Dzięki temu dane o rozmiarze i variation_id
zaczęły być poprawnie przesyłane do WooCommerce i były w miejscu łatwym do znalezienia dla developera.
Testowanie poprawności działania
Po poprawieniu błędu, przeprowadziliśmy dokładne testy, aby upewnić się, że dane wariantu (np. rozmiar bluzy) są prawidłowo przesyłane do WooCommerce, a cena w koszyku odpowiada wybranemu wariantowi.
Optymalizacja synchronizacji z BaseLinkerem
Po naprawieniu problemu z przesyłaniem wariantów, upewniliśmy się, że BaseLinker prawidłowo synchronizuje dane o zamówieniu, co pozwoliło na prawidłową realizację zamówień.
Wynik końcowy całej akcji
Po wdrożeniu poprawek, dodawanie wariantów produktów do koszyka działało prawidłowo. Klient mógł teraz:
-
Dodawać warianty produktów (np. rozmiary odzieży) z prawidłową ceną i przypisanymi atrybutami.
-
Proces zakupowy został naprawiony, a cena w koszyku odpowiadała cenie wybranego wariantu.
-
BaseLinker prawidłowo synchronizował dane o zamówieniu i wariantach, co umożliwiło poprawną realizację zamówień.
Czas operacyjny: 2 i pół godziny.
Podsumowanie
Ten przypadek był wyjątkowo trudny i czasochłonny, ponieważ zła konfiguracja AJAX i błędne umiejscowienie funkcji w kodzie sprawiły, że musiałem przeszukać ponad 15 tysięcy linii kodu. Ze względu na brak kompetencji ze strony agencji odpowiedzialnej za stronę, problem wymagał intensywnej analizy i pracy nad poprawą kodu bez pomocy z ich strony. Dopiero po zlokalizowaniu funkcji odpowiedzialnej za przesyłanie wariantów, mogłem wprowadzić niezbędne poprawki, które przywróciły prawidłowe działanie sklepu.
Dzięki szybkiemu działaniu udało się naprawić problem z wariantami, a sklep odzyskał pełną funkcjonalność, umożliwiając klientowi prawidłowe składanie zamówień.