Przejdź do treści
Darmowy audyt

Sklepy internetowe Problem i rozwiązanie

Koszyk WooCommerce nie aktualizuje się po dodaniu produktu - przyczyny i rozwiązanie

Autor: Bartosz Gromek Zaktualizowano: 3 min czytania

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/

  1. 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.
  2. 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_.
  3. 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.
  4. Ustaw jeden adres sklepu (https i z www albo bez) w Ustawieniach ogólnych i przekieruj drugi wariant przekierowaniem 301.
  5. 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).
  6. 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

  1. WooCommerce: konfiguracja cache (dokumentacja) (otwiera się w nowej karcie) developer.woocommerce.com

Podobne problemy

O autorze

Bartosz Gromek

Założyciel CodeScriptum, technologia i rozwój

Założyciel CodeScriptum - firmy technologicznej z Łodzi, działającej od 2022 roku. Odpowiada za technologię i rozwój, a projekty realizuje razem z zespołem specjalistów od stron, sklepów internetowych, systemów CRM, integracji, AI i marketingu. Na blogu opisuje problemy, z którymi zgłaszają się klienci CodeScriptum, i sprawdzone sposoby ich rozwiązania.

Newsletter

Konkretne porady raz na jakiś czas

Nowe problemy i rozwiązania z bloga, zmiany w przepisach dla sklepów i stron oraz sprawdzone sposoby na więcej klientów z internetu. Bez spamu, wypis jednym kliknięciem.