En çok ihtiyaç duyduğunuz anda güvenilir WordPress eğitimleri.

Yeni Başlayanlar İçin WordPress Kılavuzu

12+

Yılların Dijital Deneyimi

[total_posts]

Yayınlanan İçerik

WooCommerce 2000 TL Üzeri Kargo Bedava + Etiket Değiştirme + Tek Seferlik Mesaj [Kod]

WooCommerce ile çalışan mağazalarda sıkça ihtiyaç duyulan bir özellik:
Belirli bir tutar üzerindeki siparişlerde otomatik ücretsiz kargo uygulamak ve bunun kullanıcıya şık bir şekilde gösterilmesi.

Bu yazıda:

  • WooCommerce sepet tutarı 2000 TL ve üzerindeyse sadece “Kargo Bedava” seçeneğini aktif eden,

  • Altında ise sabit ücretli (örneğin 150 TL) kargo uygulayan,

  • “Free shipping” yazısını “Kargo Bedava” olarak değiştiren,

  • Ve kullanıcıya sadece bir kez bilgilendirme mesajı gösteren

tam fonksiyonel ve WooCommerce 9.5+ uyumlu bir PHP kod yapısı paylaşıyoruz.


🔧 Kullanım Senaryosu:

🛍️ Bir müşteriniz sepetine ürün eklediğinde:

  • Sepet 2000 TL altında ise:
    ✅ 150 TL sabit kargo uygulanır
    ✅ “Ücretsiz kargo için 2000 TL harcayın” mesajı sadece bir kez görünür

  • Sepet 2000 TL ve üzerindeyse:
    ✅ “Kargo Bedava” seçeneği tek başına gösterilir
    ✅ Bilgilendirme mesajı: “Sepetiniz 2000 TL üzeri olduğu için kargo bedava”


💻 Kod:

Aşağıdaki kodu temanızın functions.php dosyasına eklemeniz yeterlidir:

				
					/**
 * @snippet       WooCommerce 2000 TL Üzeri Kargo Bedava + Etiket Değişimi + Bilgilendirme @ WooCommerce 9.5+
 * @author        Furkan Sağlam
 * @website       https://www.furkansaglam.com
 */

// 1. Kargo kuralı ve "Kargo Bedava" etiketini uygulama
add_filter( 'woocommerce_package_rates', 'fks_customize_shipping_methods', 9999, 2 );
function fks_customize_shipping_methods( $rates, $package ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return $rates;

    $free_shipping_limit = 2000;
    $cart = WC()->cart;
    if ( ! $cart ) return $rates;

    $subtotal = $cart->get_subtotal();

    $new_rates = [];

    foreach ( $rates as $rate_key => $rate ) {
        // Etiket değiştirme
        if ( $rate->method_id === 'free_shipping' ) {
            $rate->label = 'Kargo Bedava';
        }

        // 2000 TL ve üzerindeyse sadece ücretsiz kargo göster
        if ( $subtotal >= $free_shipping_limit && $rate->method_id === 'free_shipping' ) {
            $new_rates[ $rate_key ] = $rate;
        }

        // 2000 TL altındaysa sadece sabit oranlı kargo göster
        if ( $subtotal < $free_shipping_limit && $rate->method_id === 'flat_rate' ) {
            $new_rates[ $rate_key ] = $rate;
        }
    }

    // Eğer uygun oran bulunamadıysa, orijinal oranları göster
    return ! empty( $new_rates ) ? $new_rates : $rates;
}

// 2. Gönderim alanında bilgilendirme mesajı (sadece bir kez göster)
add_action( 'woocommerce_review_order_before_shipping', 'fks_shipping_notice_once', 5 );
add_action( 'woocommerce_cart_totals_before_shipping', 'fks_shipping_notice_once', 5 );

function fks_shipping_notice_once() {
    if ( WC()->session && WC()->session->get( 'fks_shipping_notice_displayed' ) ) return;

    if ( WC()->session ) {
        WC()->session->set( 'fks_shipping_notice_displayed', true );
    }

    $limit = 2000;
    $subtotal = WC()->cart ? WC()->cart->get_subtotal() : 0;

    if ( $subtotal < $limit ) {
        $remaining = wc_price( $limit - $subtotal );
        echo '<div class="woocommerce-info" style="margin-bottom:10px;">📦 Ücretsiz kargo için sadece <strong>' . $remaining . '</strong> daha harcayın!</div>';
    } else {
        echo '<div class="woocommerce-message" style="margin-bottom:10px;">✅ Sepetiniz 2000 TL ve üzeri olduğu için <strong>kargo bedava</strong> fırsatından yararlanıyorsunuz.</div>';
    }
}

				
			

📋 WooCommerce Panel Ayarları:

Kodu kullanmadan önce Gönderim Bölgeleri kısmını şu şekilde düzenleyin:

  1. Ücretsiz Kargo (free_shipping)

    • Koşul: ❌ Olmamalı (temiz bırakılmalı)

    • Ücret: Otomatik olarak yok

  2. Sabit Oranlı Kargo (flat_rate)

    • Koşul: ❌ Olmamalı

    • Ücret: 150 TL (örnek)


📌 İpuçları:

  • Bu yapı woocommerce_package_rates filtresini kullanarak tüm sistemin kargo mantığını kontrol eder.

  • “Kargo Bedava” etiketi sabit olarak değiştirilir, gettext gibi çevirilere gerek kalmaz.

  • Bilgilendirme mesajı, sadece ilk gösterimde tetiklenir (session bazlı), sayfa yenilemelerinde tekrar gösterilmez.

Bu yapı, hem kullanıcı deneyimini hem de satış oranlarını artırmaya yönelik sade ve güçlü bir çözümdür.
Kodu dilediğiniz gibi özelleştirebilir, farklı eşikler (örneğin 500 TL) veya farklı mesajlar tanımlayabilirsiniz.

📌 Geliştirici notu: Kod WooCommerce 9.5 ve 9.9.4 sürümleriyle test edilmiştir. Cache eklentileri veya gönderim eklentileriyle birlikte kullanıyorsanız çakışma kontrolü yapmanız önerilir.

Bu makaleyi beğendiyseniz, lütfen WordPress video eğiticileri için YouTube Kanalımıza abone olun. Bizi Twitter ve Facebook’ta da bulabilirsiniz.

Facebook
Twitter
LinkedIn
Email
WhatsApp

İlgilinizi çekebilecek diğer içerikler

Picture of Furkan Sağlam

Furkan Sağlam

Mavis Agency'de Dijital Yöneticisi olarak görev yapmaktadır. Marka yönetimi, e-ticaret çözümleri ve dijital pazarlama stratejileri konularında uzmandır. Blog yazılarında, güncel dijital trendler ve etkili pazarlama taktikleri üzerine değerli bilgiler sunmaktadır. Dijital dünyada markaların başarısına katkıda bulunmayı amaçlamaktadır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

3.200'den fazla okuyucu

furkansaglam.com’u yeni içerikler için takip edin!

Haftanın WordPress Eklentisi

WP Sweep

Eski taslakları, spam yorumları ve kullanılmayan verileri silerek performansınızı artırın.
Hemen keşfedin!