Sklepy internetowe Problem i rozwiązanie
Koszyk WooCommerce nie aktualizuje się po dodaniu produktu - przyczyny i rozwiązanie
W skrócie
- Objaw: po dodaniu produktu licznik koszyka się nie zmienia, koszyk jest pusty albo pokazuje produkty z poprzedniej wizyty.
- Przyczyna: najczęściej cache stron albo CDN zapisuje koszyk i nagłówek jak zwykłą stronę; rzadziej konflikt skryptów albo dwa adresy sklepu (z www i bez).
- Rozwiązanie: wyklucz koszyk, zamówienie, konto i ciasteczka WooCommerce z cache, ustaw jeden adres sklepu i sprawdź skrypty w konsoli przeglądarki.
Nie masz czasu? Zrobimy to za Ciebie - Sklepy internetowe od 2 000 zł netto
Jak to wygląda
Klient klika „Dodaj do koszyka”, widzi komunikat o dodaniu produktu, ale licznik w nagłówku się nie zmienia. Po przejściu do koszyka jest on pusty albo zawiera produkty, które klient dodał wcześniej. Czasem problem dotyczy tylko telefonu albo trybu incognito, a w panelu administratora wszystko działa, bo zalogowany administrator omija cache.
- licznik koszyka w nagłówku pokazuje 0 albo starą liczbę,
- produkt „znika” z koszyka po odświeżeniu strony,
- różni klienci widzą ten sam koszyk (najpoważniejszy wariant).
Dlaczego tak się dzieje
WooCommerce zapamiętuje koszyk w sesji, którą rozpoznaje po ciasteczku w przeglądarce klienta. Wtyczka cache albo CDN zapisuje gotowy HTML strony i podaje go kolejnym osobom. Jeśli do cache trafi strona koszyka albo nagłówek z licznikiem, klient dostaje cudzą albo starą wersję zamiast swojego koszyka.
Cache serwera i wtyczki cache
Strony /koszyk/, /zamowienie/ i /moje-konto/ oraz żądania z ciasteczkami woocommerce_items_in_cart, woocommerce_cart_hash i wp_woocommerce_session_ nie mogą być zapisywane w cache. Większość wtyczek cache ma na to gotowe ustawienia, ale cache serwera lub CDN (np. Cloudflare z regułą „cache everything”) często o nich nie wie.
Dwa adresy sklepu
Jeśli sklep działa jednocześnie pod adresem z www i bez www albo pod http i https, ciasteczko sesji jest zapisane dla jednego adresu, a klient przechodzi na drugi. Wtedy koszyk wygląda na pusty.
Skrypty i optymalizacja JavaScript
Licznik koszyka odświeża skrypt WooCommerce. Opóźnianie, łączenie albo usuwanie skryptów przez wtyczki optymalizacyjne potrafi go wyłączyć, a błąd innego skryptu zatrzymuje wszystkie kolejne.
| Objaw | Najczęstsza przyczyna | Gdzie sprawdzić |
|---|---|---|
| Pusty koszyk po odświeżeniu | Cache strony koszyka | Ustawienia wtyczki cache, reguły CDN |
| Stary licznik w nagłówku | Cache nagłówka albo opóźniony skrypt | Optymalizacja JS, konsola przeglądarki |
| Koszyk znika po przejściu na inną stronę | Dwa adresy sklepu | Adres witryny, przekierowania 301 |
| Cudzy koszyk | Cache stron dla wszystkich użytkowników | Cache serwera i CDN (pilne) |
Jeśli klienci widzą cudze koszyki albo dane, wyłącz cache serwera i CDN od razu, a dopiero potem szukaj właściwej konfiguracji. To problem bezpieczeństwa danych, a nie tylko sprzedaży.
Ten problem jest jednym z naszej listy 100 problemów z WooCommerce.
Darmowy skan sklepu
Sprawdź swój sklep za darmo
Wpisz adres, a przeniesiemy Cię do bezpłatnego skanu na stronie CodeScriptum.
Jak to rozwiązać krok po kroku
Koszyk WooCommerce nie aktualizuje się po dodaniu produktu - przyczyny i rozwiązanie - https://codescriptum.pl/blog/koszyk-woocommerce-nie-aktualizuje-sie/
- Sprawdź problem w oknie incognito na telefonie i komputerze, będąc wylogowanym. Zanotuj, czy koszyk znika po odświeżeniu, czy tylko licznik się nie zmienia.
- W ustawieniach wtyczki cache wyklucz strony koszyka, zamówienia i konta oraz żądania z ciasteczkami woocommerce_items_in_cart, woocommerce_cart_hash i wp_woocommerce_session_.
- Jeśli używasz Cloudflare lub cache serwera, dodaj te same wyjątki w regułach CDN i panelu hostingu, a potem wyczyść cały cache.
- Ustaw jeden adres sklepu (https i z www albo bez) w Ustawieniach ogólnych i przekieruj drugi wariant przekierowaniem 301.
- Wyłącz na chwilę opóźnianie i łączenie JavaScript we wtyczce optymalizacyjnej. Jeśli koszyk zacznie działać, wyklucz z optymalizacji skrypty WooCommerce (wc-cart-fragments, woocommerce).
- Otwórz konsolę przeglądarki (F12) na stronie produktu i usuń przyczynę pierwszego błędu JavaScript, zwykle wtyczkę albo skrypt śledzący.
Jak sprawdzić, że zadziałało
W oknie incognito dodaj dwa różne produkty, odśwież stronę, przejdź do koszyka i do zamówienia. Licznik w nagłówku musi się zgadzać z koszykiem na każdym kroku, a druga przeglądarka (inny klient) musi widzieć pusty koszyk.
Usługa CodeScriptum
Sklepy internetowe
od 2 000 zł netto
- WooCommerce, Shopify, PrestaShop, Shoper i sklepy dedykowane
- Migracja bez utraty pozycji w Google
- Integracje: płatności, InPost, BaseLinker, KSeF
Najczęściej zadawane pytania
Dlaczego jako administrator nie widzę problemu z koszykiem?
Większość wtyczek cache nie podaje zapisanych stron zalogowanym administratorom. Testuj zawsze w oknie incognito, jako zwykły klient.
Czy muszę wyłączyć cache, żeby koszyk działał?
Nie. Cache jest potrzebny dla szybkości. Wystarczy wykluczyć z niego koszyk, zamówienie, konto i żądania z ciasteczkami WooCommerce.
Czy problem może wynikać z motywu?
Tak, jeśli motyw ma własny licznik koszyka lub mini koszyk, który nie korzysta z mechanizmu fragmentów WooCommerce. Sprawdź to, włączając na chwilę domyślny motyw.
Pojęcia w tym artykule
Źródła
- WooCommerce: konfiguracja cache (dokumentacja) (otwiera się w nowej karcie) developer.woocommerce.com
Podobne problemy
Sklepy internetowe
Sklep WooCommerce wolno działa na telefonie - przyczyny i jak go przyspieszyć
Rozwiązanie Mocniejszy serwer z cache, lżejsze zdjęcia, mniej skryptów i poprawnie ustawiony cache, zaczynając od największego elementu strony (LCP).
Sklepy internetowe
Brak najniższej ceny z 30 dni w WooCommerce (Omnibus) - jak to dodać
Rozwiązanie Wtyczka lub moduł, który zapisuje historię cen każdego produktu i wariantu oraz wyświetla najniższą cenę z 30 dni przy każdej obniżce.
Sklepy internetowe
GPSR w sklepie WooCommerce: brak danych producenta i informacji o bezpieczeństwie
Rozwiązanie Dodaj pola GPSR do produktów (najlepiej na poziomie producenta lub marki), uzupełnij dane i wyświetl je na karcie produktu.
Sklepy internetowe
Klient zapłacił, a zamówienie WooCommerce dalej „Oczekuje na płatność”
Rozwiązanie Popraw adres powiadomień w panelu operatora, odblokuj go w zaporze i cache, zaktualizuj wtyczkę bramki i sprawdź logi.