WooCommerce Sepette Adet Değişince Otomatik Güncelleme

WooCommerce’in varsayılan çalışma mantığında, kullanıcı sepet sayfasında ürün adetini değiştirir ama sepet otomatik olarak güncellenmez. Bunun yerine “Sepeti Güncelle” butonuna manuel olarak basmak gerekir.

Bu durum özellikle mobil kullanıcılar için hem zaman kaybı hem de kötü bir kullanıcı deneyimine yol açabilir.

Bu yazıda, ek bir eklenti kurmadan, sadece bir mini plugin oluşturarak sepet sayfasının otomatik güncellenmesini sağlayacağız.

Ne İşe Yarar?

Aşağıdaki kod sayesinde:

  • Kullanıcı adet alanını değiştirdiği anda,
  • WooCommerce’in kendi “update cart” AJAX tetikleyicisi çalışır,
  • 1 saniyelik gecikmeyle sepet otomatik güncellenir,
  • Zorunlu “Sepeti Güncelle” butonu kullanımdan kalkar,
  • Daha modern ve daha hızlı bir deneyim sağlanır.

Aşağıdaki kodu kopyalayıp wp-content/plugins/woocommerce-otomatik-sepet-guncelleme/ klasörünün içine woocommerce-otomatik-sepet-guncelleme.php adıyla kaydedin ve eklentiyi etkinleştirin.

<?php
/**
* Plugin Name: WooCommerce Otomatik Sepet Güncelleme
* Description: WooCommerce sepet sayfasında adet değiştirildiğinde, sepeti otomatik olarak günceller.
* Version: 1.0
* Author: Vedat Aydar
* License: GPL2
*/

// Doğrudan erişimi engelle
if ( ! defined( 'ABSPATH' ) ) {
exit;
}

/**
* Sepet sayfasında otomatik güncelleme için JavaScript ekler.
*/
function woocommerce_auto_update_cart_script() {
// Sadece sepet sayfasında ve WooCommerce aktifse çalıştır
if ( is_cart() && function_exists('is_woocommerce') ) {
?>
<script type="text/javascript">
jQuery(document).ready(function($){
// Sepet formunu ve adet giriş alanını dinle
var update_timeout;

// Giriş alanındaki değişimleri yakala
$('.woocommerce-cart-form').on('change', 'input.qty', function(){

// Önceki zaman aşımını temizle
if (update_timeout !== undefined) {
clearTimeout(update_timeout);
}

// 1 saniye sonra (kullanıcının hızlıca birden fazla değişiklik yapmasını önlemek için) güncelle
update_timeout = setTimeout(function() {
// "Sepeti Güncelle" butonuna tıklama olayını tetikle (WooCommerce AJAX tetikleyicisi)
$('[name="update_cart"]').trigger('click');
}, 1000 ); // 1000 milisaniye = 1 saniye gecikme
});
});
</script>
<?php
}
}
// Kodu sayfanın footer'ına ekle
add_action( 'wp_footer', 'woocommerce_auto_update_cart_script' );

Kod Nasıl Çalışıyor?

Kodun mantığı oldukça basit:

  1. is_cart() → Kodun sadece sepet sayfasında çalışmasını sağlar.
  2. jQuery ile adet input alanındaki değişiklikler takip edilir.
  3. Kullanıcı miktarı değiştirdiğinde:
    • 1 saniyelik debounce süresi tanınır
    • Ardından WooCommerce’in “update cart” butonu otomatik tetiklenir
  4. Sebetteki fiyat, toplam ve ara toplamlar anında yenilenir.

Bir yanıt yazın