• 02-01-2024, 22:10:35
    #1
    Merhabalar değerli arkadaşlar, benim acil çözmem gereken bir sorunum var , sitemde , yatak kategorisi hariç diğer kategorilerde ki ürünlerin toplamı 4000 TL yi geçerse, yatklarda yüzde 5 indirim sağlamam gerekiyor , eklentiler denedim ama yapamadım bu konuda yardımcı olabilir misiniz acaba
  • 02-01-2024, 22:19:54
    #2
    Selamlar, Yazılım uzmanı değilim lakin chatgpt ile şöyle bir kod yazdırdım function.php en alta ekleyip deneyebilrimisin ?

    X yazan yere ilgili kategorinin İD'sini yazıcaksın bunu kategoriler kısmına girdikten sonra fareyi ilgili kategorinin üstüne getir url görünür orda İD sini bulabilirsin.

    function indirim_kontrolu() {
    // x kategorisinin ID'sini al
    $x_kategorisi_id = get_term_by('slug', 'x', 'product_cat')->term_id;
    
    // Tüm ürünleri getir
    $tum_urunler = wc_get_products();
    
    // Toplam fiyatı saklamak için bir değişken tanımla
    $toplam_fiyat = 0;
    
    // Ürünleri kontrol et
    foreach ($tum_urunler as $urun) {
    // Ürünün kategorilerini al
    $kategoriler = $urun->get_category_ids();
    
    // Eğer ürün x kategorisine ait değilse
    if (!in_array($x_kategorisi_id, $kategoriler)) {
    // Ürünün fiyatını toplam fiyata ekle
    $toplam_fiyat += $urun->get_price();
    }
    }
    
    // Toplam fiyat 4000 TL'yi geçerse
    if ($toplam_fiyat > 4000) {
    // Tüm sepet ürünlerine %5 indirim uygula
    WC()->cart->apply_coupon('indirimkodu'); // 'indirimkodu' yerine kullanmak istediğiniz bir kupon kodu belirleyebilirsiniz.
    }
    }
    
    // Sepet güncellendiğinde fonksiyonu çağır
    add_action('woocommerce_cart_updated', 'indirim_kontrolu');
    Başka bir function bunuda deneyebilirsin bu daha doğru olabilir.

    function otomatik_indirim_uygula() {
    // İndirim uygulanacak kategorinin ID'sini belirle
    $hedef_kategori_id = 10; // Bu kısmı kendi kategorinizin ID'siyle değiştirin
    
    // Tüm sepet ürünlerini al
    $tum_urunler_sepet = WC()->cart->get_cart();
    
    // Toplam fiyatı saklamak için bir değişken tanımla
    $toplam_fiyat = 0;
    
    // Sepetteki ürünleri kontrol et
    foreach ($tum_urunler_sepet as $sepet_urun) {
    // Ürün ID'sini al
    $urun_id = $sepet_urun['product_id'];
    
    // Ürünün kategorilerini al
    $kategoriler = get_the_terms($urun_id, 'product_cat');
    
    // Eğer ürün hedef kategoriye ait değilse
    if ($kategoriler && !in_array($hedef_kategori_id, wp_list_pluck($kategoriler, 'term_id'))) {
    // Ürünün toplam fiyatını toplam fiyata ekle
    $toplam_fiyat += $sepet_urun['line_total'];
    }
    }
    
    // Toplam fiyat 4000 TL'yi geçerse
    if ($toplam_fiyat > 4000) {
    // Tüm sepet ürünlerine %5 indirim uygula
    $indirim_orani = 0.05;
    foreach ($tum_urunler_sepet as $key => $sepet_urun) {
    $yeni_fiyat = $sepet_urun['line_total'] * (1 - $indirim_orani);
    WC()->cart->cart_contents[$key]['line_total'] = $yeni_fiyat;
    WC()->cart->cart_contents[$key]['data']->set_price($yeni_fiyat / $sepet_urun['quantity']);
    }
    }
    }
    
    // Sepet güncellendiğinde fonksiyonu çağır
    add_action('woocommerce_cart_calculate_fees', 'otomatik_indirim_uygula');
  • 02-01-2024, 22:38:30
    #3
    Teşekkür ederim, bende denedim gpt den ama çalışsa bile indirim toplamını göstermedi birtürlü
  • 02-01-2024, 22:49:10
    #4
    codars adlı üyeden alıntı: mesajı görüntüle
    Teşekkür ederim, bende denedim gpt den ama çalışsa bile indirim toplamını göstermedi birtürlü

    Hocam şimdi kodları kendi demo sitemde denedim bende çalışıyor kontrol edebilirmisiniz ?

    2 Farklı indirim olayı var.

    1 - Bu kod ile sepete eklenen ürünler üzerinden ürün fiyatlarına %5 üzerinden indirim yapıyor.

    Kod 'u burada;
    function otomatik_indirim_uygula() {
    // İndirim uygulanacak kategorinin ID'sini belirle
    $hedef_kategori_id = 16; // Bu kısmı kendi kategorinizin ID'siyle değiştirin
    
    // Tüm sepet ürünlerini al
    $tum_urunler_sepet = WC()->cart->get_cart();
    
    // Toplam fiyatı saklamak için bir değişken tanımla
    $toplam_fiyat = 0;
    
    // Sepetteki ürünleri kontrol et
    foreach ($tum_urunler_sepet as $sepet_urun) {
    // Ürün ID'sini al
    $urun_id = $sepet_urun['product_id'];
    
    // Ürünün kategorilerini al
    $kategoriler = get_the_terms($urun_id, 'product_cat');
    
    // Eğer ürün hedef kategoriye ait değilse
    if ($kategoriler && !in_array($hedef_kategori_id, wp_list_pluck($kategoriler, 'term_id'))) {
    // Ürünün toplam fiyatını toplam fiyata ekle
    $toplam_fiyat += $sepet_urun['line_total'];
    }
    }
    
    // Toplam fiyat 4000 TL'yi geçerse
    if ($toplam_fiyat > 4000) {
    // Tüm sepet ürünlerine %5 indirim uygula
    $indirim_orani = 0.05;
    foreach ($tum_urunler_sepet as $key => $sepet_urun) {
    $yeni_fiyat = $sepet_urun['line_total'] * (1 - $indirim_orani);
    WC()->cart->cart_contents[$key]['line_total'] = $yeni_fiyat;
    WC()->cart->cart_contents[$key]['data']->set_price($yeni_fiyat / $sepet_urun['quantity']);
    }
    }
    }
    
    // Sepet güncellendiğinde fonksiyonu çağır
    add_action('woocommerce_cart_calculate_fees', 'otomatik_indirim_uygula');






    2 Yöntem - Bu ise Sepete eklenen ürünlerin toplamı 4000TL geçer ise %5 indirim uyguluyor isteğinize en yakın bu sanırım.

    Kod burada
    if (!function_exists('otomatik_indirim_uygula')) {
    function otomatik_indirim_uygula() {
    // İndirim uygulanacak kategorinin ID'sini belirle
    $hedef_kategori_id = 10; // Bu kısmı kendi kategorinizin ID'siyle değiştirin
    
    // Tüm sepet ürünlerini al
    $tum_urunler_sepet = WC()->cart->get_cart();
    
    // Toplam fiyatı saklamak için bir değişken tanımla
    $toplam_fiyat = 0;
    
    // Sepetteki ürünleri kontrol et
    foreach ($tum_urunler_sepet as $sepet_urun) {
    // Ürün ID'sini al
    $urun_id = $sepet_urun['product_id'];
    
    // Ürünün kategorilerini al
    $kategoriler = get_the_terms($urun_id, 'product_cat');
    
    // Eğer ürün hedef kategoriye ait değilse
    if ($kategoriler && !in_array($hedef_kategori_id, wp_list_pluck($kategoriler, 'term_id'))) {
    // Ürünün toplam fiyatını toplam fiyata ekle
    $toplam_fiyat += $sepet_urun['line_total'];
    }
    }
    
    // Toplam fiyat 4000 TL'yi geçerse
    if ($toplam_fiyat > 4000) {
    // Sepetin toplam tutarına %5 indirim uygula
    $indirim_orani = 0.05;
    $indirim_miktari = $toplam_fiyat * $indirim_orani;
    WC()->cart->add_fee('Indirim', -$indirim_miktari, true, 'standard');
    }
    }
    }
    
    // Sepet güncellendiğinde fonksiyonu çağır
    add_action('woocommerce_cart_calculate_fees', 'otomatik_indirim_uygula');


  • 02-01-2024, 23:00:51
    #5
    Evet ikincisi yakın duruyor , emeğinize sağlık hocam bunun üzerinden çalışayım ben