WooCommerce sepeti kendiliğinden boşalıyor
Müşteri bir ürün ekliyor, başka bir sayfaya geçiyor ve sepet boş: bu neredeyse her zaman bir oturum kalıcılığı sorunudur, WooCommerce sepetinin kendisindeki bir hata değildir. WooCommerce sepet içeriğini çerezler ve bir PHP oturumu üzerinden takip eder; ikisinden biri sayfadan sayfaya güvenilir şekilde iletilmediğinde, sepet kendiliğinden boşalıyormuş gibi görünür.
Nasıl ilerliyorum
-
Sepet çerezlerinin kontrolü
Tarayıcıda woocommerce_cart_hash ve wp_woocommerce_session_… çerezlerinin sepete ekleme sonrasında gerçekten oluşturulduğunu ve sayfadan sayfaya silinmeden kaldığını kontrol ediyorum.
-
Önbellek devre dışıyken test
Tüm sayfa önbelleğini kapatarak süreci yeniden deniyorum. Bu durumda sepet normal davranıyorsa, en sık görülen neden doğrulanır: aktif bir sepeti olan bir ziyaretçiye önbelleğe alınmış, oturumu kapalı bir sayfa sürümü sunulmasıdır.
-
Etkin alan adının kontrolü
Sitenin geri kalanı www’siz iken satın alma sürecindeki hiçbir sayfanın www ile, ya da https yerine http ile yüklenmediğini kontrol ediyorum: bu tür bir uyumsuzluk çerezin etkin alan adını değiştirir ve oturumu sessizce bozar.
-
PHP oturum depolamasının kontrolü
Kötü yapılandırılmış, özellikle birden fazla sunucu arasında yük dengelemesi yapan bir barındırmada, PHP oturum depolaması istekler arasında düzgün paylaşılmayabilir; bu da WooCommerce tarafında görünürde bir neden olmadan sepeti boşaltır.
-
Sepeti boşaltan bir eklentinin araştırılması
Çapraz satış, terkedilmiş sepet hatırlatması veya promosyon eklentisinin WC()->cart->empty_cart() fonksiyonunu beklenmedik bir anda çağırıp çağırmadığını kontrol ediyorum: daha nadir ama daha önce karşılaştığım gerçek bir durum.
Düzenli olarak ele aldığım durumlar
- Müşteri bir ürün ekliyor, daha sonra siteye geri dönüyor ve sepet yeniden boş oluyor
- Sepet sayfa değişikliğinde boşalıyor ama her seferinde değil
- Sorun yalnızca adresin başında www varken, ya da yalnızca www olmadığında ortaya çıkıyor
- Bir önbellek eklentisi etkinleştirildikten veya barındırma değiştirildikten hemen sonra sepet çalışmaz oldu
- Gizli sekmede sorunu tekrar üretmek mümkün değil, yalnızca normal gezinmede oluyor
Bir sepet oturumunu neler bozar
WooCommerce bir sepeti iki çerezle takip eder: sepet içeriğinin değişip değişmediğini tespit eden woocommerce_cart_hash ve tarayıcıyı, gerçek içeriğin saklandığı sunucu tarafındaki bir PHP oturumuna bağlayan wp_woocommerce_session_…. Bu ikisinden biri her sayfada doğru şekilde iletilmezse, WooCommerce artık o ziyaretçiye bağlı sepeti bulamaz.
Açık ara en sık görülen neden, aktif bir oturum çerezi olan bir ziyaretçiye, statik ve oturumu kapalı bir sayfa sürümü sunan bir sayfa önbellekleme eklentisidir (ya da barındırma seviyesinde dayatılan bir önbellek). Sepet, hesap sayfaları ve satın alma süreci her zaman dinamik kalmalıdır; asla bir vitrin sayfası gibi önbelleğe alınmamalıdır.
Bir alan adı uyumsuzluğu, www ile www’siz veya http ile https, çerezin bağlı olduğu etkin alan adını da değiştirir: sepet, adres varyantları arasında geçiş yapılırken boşalıyormuş gibi görünür, oysa gerçekte iki ayrı oturum söz konusudur.
İlgili sayfalar
İhtiyacınızı bir dakikada anlatın
Size bir anket daha değil, doğrudan bir tahmin sunabilmem için birkaç hedefli soru.