Bu yazımızda WooCommerce ile e-ticaret yaparken küçük ama bir o kadar da etkili bir sorunun çözümünü anlatacağız. 3.6.0+ sürümleri ile birçok yeniliğe giden WooCommerce zaman geçtikçe sektördeki yerini korumaya ve yükselmeye devam ediyor. Kendi verilerine göre E-Ticaret kategorisinde dünyadaki Web Sitelerinin %28’ini oluşturmakta. Açık kaynak olmasının yanı sıra ücretli / ücretsiz binlerce ekstra eklentiler ile destekleyebildiğiniz yegane e-ticaret sistemlerinden birisi.
Tüm temalarda gözümüze çarpan bu “Sepet Güncellenme” sorununu birlikte çözeceğiz. İlk önce problemi tanıyalım.
1) Ürün sepete eklendiğinde sepet içeriği güncellenmiyor.
Bir ürün satın alınmak istendiğinde sepete eklendi uyarısını alıyoruz. Gel gelelim ki Ajax ekleme aktif ise sayfa yenilenmeden sepete ekleniyor. Buraya kadar her şey güzel. Fakat bu mini sepette görünmediğinde kullanıcının dikkatinden kaçmıyor. Her ne kadar basit görünse de sitenizin güvenilirliği ve hızlı görünmesi için önemli bir konu.
Bunun için ilk önce WooCommerce > Ayarlar > Ürünler alanından “Sepete ekleme butonunda AJAX etkin olsun” seçeneğinin aktif olması gerekmektedir. Bunu takiben sorunun çözümünü aşağıda birkaç adım ile açıkladık. Unutmayın, aktif temanızda değişiklikler yapmak için Child (Alt) tema oluşturmanız her zaman tavsiye edilmektedir. Düzenleyeceğiniz dosyanın bir yedeğini de bulundurmayı unutmayınız. Sorunun çözümüne geçebiliriz;
2) Kod parçacığını functions.php‘ dosyanıza ekleyebilirsiniz.
Burada önemli olan WooCommerce varsayılan sepet sisteminin değiştirilmemiş olması. Eğer değiştirildi ise yeni dosyalardaki HTML yapısını bu kod parçacığına uyumlu hale getirmelisiniz.
function woocommerce_ajax_fix( $fragments ) {
global $woocommerce;
ob_start();
?>
<a class="cart-contents" href="<?php echo esc_url( wc_get_cart_url() ); ?>" title="<?php esc_attr_e( 'Sepet', 'textdomain' ); ?>">
<span class="amount"><?php echo wp_kses_data( WC()->cart->get_cart_subtotal() ); ?></span>
<span class="count"><?php echo wp_kses_data( sprintf( _n( '%d', WC()->cart->get_cart_contents_count(), 'textdomain' ), WC()->cart->get_cart_contents_count() ) );?></span>
</a>
<?php
$fragments['a.cart-contents'] = ob_get_clean();
return $fragments;
}
add_filter( 'woocommerce_add_to_cart_fragments', 'woocommerce_ajax_fix' );
3) Son Adım
Kod parçacığını functions.php dosyamıza ekledikten sonra çerezleri temizleyerek sitemizi kontrol edebiliriz. Artık sepete eklenen X ürünü için fiyat ve adet bilgisi anlık güncellenecektir. Burada dikkat edilmesi gereken nokta varsayılan WooCommerce sepet çekirdeğinin değiştirilmemiş olmasıdır. Sizde WooCommerce ile e-ticaret yapıyor ve sepet sorunu yaşıyorsanız bu yazımız sizlere basit ve hızlı bir çözüm sunuyor. WooCommerce temaları ve temalarda yaşanılan sorunları hızlı bir şekilde çözüme kavuşturmak için bir sonraki yazımızda görüşmek üzere.