WooCommerce’de Belirli Kategoriye Özel Kargo Ücreti Ekleme
E-ticaret sitenizde ürünleri sadece sepete eklemek ve ödeme almak yeterli değil. Kullanıcı deneyimini geliştirmek, lojistik maliyetlerini kontrol altında tutmak ve müşteriye şeffaf fiyatlandırma sunmak için kargo ücretlerini doğru bir şekilde yapılandırmak büyük önem taşır.
WooCommerce altyapısı kullanan birçok mağaza sahibi, tüm ürünlere tek tip sabit kargo ücreti uygularken bazı kategoriler için ayrı bir ücret politikası tanımlamanın gerekli olduğunu fark ediyor. Özellikle tekstil, ayakkabı veya hacimli ürünler gibi farklı taşıma maliyetine sahip ürün grupları için kategori bazlı kargo ücreti belirlemek son derece mantıklıdır.
Bu yazıda sizlerle, yalnızca “t-shirt” kategorisindeki ürünler için geçerli olacak şekilde adet bazlı kargo ücreti ekleme işlemini nasıl yapabileceğinizi paylaşıyorum. Ayrıca yapıyı esnek hale getirerek ileride başka kategorilere de kolayca uyarlayabileceğiniz bir çözüm sunacağım.
Neden Kategoriye Özel Kargo Ücreti?
Tüm ürünler aynı kutuya sığmaz. Örneğin bir t-shirt ile bir montun gönderim maliyetleri doğal olarak farklı olacaktır. Bu sebeple:
-
Ağırlığı veya hacmi fazla ürünler için ek taşıma bedeli yansıtmak,
-
Küçük ve hafif ürünlerde düşük kargo uygulamak,
-
Müşteriye alışveriş esnasında net bilgi sunmak
e-ticaret sitenizde daha profesyonel ve güvenilir bir izlenim yaratır.
WooCommerce için Örneğin T-Shirt Kategorisine Özel Kargo Ücreti Kodu
Aşağıda paylaştığım kod sayesinde, sepetinizdeki “t-shirt” kategorisine ait ürünlerin sayısına göre toplam kargo ücretine otomatik bir ekleme yapılır. Örneğin bir birim için 50₺ tanımladıysanız, sepette 3 t-shirt varsa toplam 150₺ kargo ücreti yansıtılır. Aşşağıdaki kodu woocommerce sitenizin tema dizininde bulunan functions.php kodunu açıp uygun yere ekleme yapıyoruz. Temanızın child sürümü varsa oraya eklemenizde fayda var aksi takdirde güncellemer sonrası kod silinecektir.
add_action('woocommerce_cart_calculate_fees', 'kategoriye_ozel_kargo_ucreti_ekle', 20, 1); function kategoriye_ozel_kargo_ucreti_ekle($cart) { if (is_admin() && !defined('DOING_AJAX')) return; // Kategori slug'larına göre birim kargo ücretlerini tanımlıyoruz $kategori_kargo_fiyatlari = array( 't-shirt' => 50, // Başka kategoriler de ekleyebilirsiniz: // 'ayakkabi' => 75, // 'mont' => 100 ); $toplam_kargo = 0; foreach ($cart->get_cart() as $cart_item) { $product = $cart_item['data']; $quantity = $cart_item['quantity']; $product_id = $product->get_id(); foreach ($kategori_kargo_fiyatlari as $kategori_slug => $birim_ucret) { if (has_term($kategori_slug, 'product_cat', $product_id)) { $toplam_kargo += $birim_ucret * $quantity; break; } } } if ($toplam_kargo > 0) { $cart->add_fee('Kargo Gönderim Ücreti', $toplam_kargo, true); } }
İçindekiler