Wordpress

WooCommerce E-ticaret Sitenize 8 Farklı Kampanya Oluşturma [Eklenti Olmadan]

WooCommerce E-ticaret Sitenize 8 Farklı Kampanya Oluşturma [Eklenti Olmadan]

Merhaba arkadaşlar, bu yazımızda WordPress’in e-ticaret siteleri oluşmak için kullandığımız WooCommerce eklentisinde bazı kampanya örnekleri nasıl oluşturulduğuna değineceğim. İyi okumalar.

WooCommerce’da kullanacağımız kampanya örneklerinin listesi

  1. Sepet Bazlı İndirimler
    • Üründe Adet Bazında Özel İndirim. (sepette toplamda Y adet ve üzeri siparişinize özel X indirim)
    • X’inci üründe Y indirim.
      • Amazon Kampanya örneği
    • X Al Y Öde Kampanyası
    • Sepet tutarına özel kampanya. (X TL ve üzeri alışverişiniz Y indirim)
  2. ilk alışverişe özel ücretsiz kargo.
  3. 1. 2. 3. siparişlere özel indirim.
  4. Ödeme yöntemlerine göre indirim.
  5. Hızlı indirim sayacı.
  6. üye olan X indirim. (yakında)
  7. Sonraki siparişlerinize özel indirimler.
  8. Üniversite Öğrencilerine İndirim Kampanyası

Kampanya kodlarını eklemek için bütün kodları Görünüm > Tema düzenleyici > function.php sayfasının en alt satırına aşağıdaki kodları sırasıyla yazarak işlemi tamamlayabilirsiniz..

wordpress görünüm tema düzenleyici funciton php

Sepette toplamda X adet ve üzeri Siparişlere özel Y indirim

Sepete eklenen ürünlerin toplamı 3 adet fazla olan kullanıcılara özel indirimler saylar.
örnek 1: Toplamı 5 adet ürün olan sepete 30 TL indirimi uygula.
örnek 2: Toplamı 5 adet ürün olan sepete %30 indirimi uygula.

/* Add Cart Discount based on cart total items amount */
add_action('woocommerce_cart_calculate_fees' , 'cart_items_discount', 10, 1);
function cart_items_discount( $cart ){
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;
 
    //  sepette 3 veya daha fazla ürün olduğunda
    if( $cart->get_cart_contents_count() >= 3):
        // indirimde değişkeni
        $is_on_sale = false;
 
        // eğer sepetinizde indirimli 
        // Sepetteki her  öğeyi tekrarla
        foreach( $cart->get_cart() as $cart_item ){
            // Ürün objesinin  bir örneğini alma
            $product =  $cart_item['data'];
            // sepetteki bir ürün indirimdeyse, $is_on_sale  döngüyü durdurur
            if($product->is_on_sale()){
                $is_on_sale = true;
                break;
            }
        }
 
        ## indirim hesaplaması ##
        //$discount = $cart->subtotal * -0.15; # sepet tutarına ek %15 indirim sağlar
        $discount =  - 15; # sepet tutarına ek 15 birim indirim sağlar(tüm para birimlerinde)
 
        ## indirim uygula (indirimde ürün yoksa) ##
        if(!$is_on_sale ){
            $cart->add_fee( '3 adet üzeri 15TL indirim', $discount);
        }
 
    endif;
}
/* Add Cart Discount based on cart total items amount */
Sepette toplamda 3 adet ve üzeri ürünlere özel X TL indirim

Sepette farklı X adet ve üzeri 1 ürün ücretsiz

Bu Kampanya örneği ise yukarıdaki kampanyanın farklı bir çeşididir. Sepetinizde 3 adet ve üzeri farklı ürün eklemeniz de sepetinizdeki en ucuz ürünün miktarı kadar indirim sağlayan kampanya örneğidir.

E-ticaret Kampanya Örnekleri

Örnek: A ürün(150 TL), B ürün(100 TL)[en ucuz], C ürün (230 TL) = Toplam 480 TL -> sepet indirimi 100 TL

/* Add Cart Discount based on cart total items amount - 2 */
add_action('woocommerce_cart_calculate_fees' , 'cart_items_discount', 10, 2);
function cart_items_discount( $cart ){
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    global $woocommerce;
    
    //  sepette 3 veya daha fazla ürün olduğunda
    if( count($cart->get_cart()) >= 3){
 
        ## indirim hesaplaması ##
        if ( sizeof( $woocommerce->cart->get_cart() ) > 0 ) { 
            foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
                $_product = $values['data'];
                $product_price[] = get_option('woocommerce_tax_display_cart') == 'excl' ? $_product->get_price_excluding_tax() : $_product->get_price_including_tax(); //Sepetteki tüm ürün fiyatlarını diziye aktar
            }
        }
        $discount = min($product_price); // sepetteki en ucuz ürün

        // indirim uygula
	$cart->add_fee( '3 adet üzeri 1 ürün ücretsiz' , -$discount);
    }
}
/* Add Cart Discount based on cart total items amount - 2 */

Kategori bazlı sepette farklı X adet ve üzeri 1 ürün ücretsiz

Yukarı işlemin aynısı fakat belirlediğimiz kategorilerde geçerli olmak üzere sepetinizde 3 adet ve üzeri farklı ürün eklemenizde sepetinizdeki en ucuz ürünün miktarı kadar indirim sağlayan kampanya örneğidir.
Sepet koşulları: Sepette kampanyaya dahil olan kategorideki ürünler en az 3 adet olması durumunda kampanya uygulanır.

$categories = array( x-kategori ); kategori kısa ismini veya id yazabilirsiniz
Örnek:
A ürün(150 TL)[x kategori]
B ürün(100 TL)[x kategori]
C ürün(90 TL)[y kategori]
D ürün(290 TL)[x kategori]
= Toplam 630 TL -> sepet indirimi 100 TL

/* Add Cart Discount based on cart total items amount - 3 */
add_action('woocommerce_cart_calculate_fees' , 'cart_items_discount', 10, 2);
function cart_items_discount( $cart ){
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    global $woocommerce;
    $categories = array( 36,25 ); // buraya kategorinin term_id ya da id yazabilirsiniz
    //  sepette 3 veya daha fazla ürün olduğunda
    if ( count( $cart->get_cart() ) >= 3 ) { 
        
        ## indirim hesaplaması ##
        
            foreach ( $woocommerce->cart->get_cart() as  $cart_item  ) {
                if ( has_term( $categories, 'product_cat', $cart_item['product_id'] ) ) { //kategoriler ile eşleşen ürünler varmı
                    $matchingCat[] = $cart_item['product_id']; // kategoriler ile eşleşen ürünlerin ID'lerini değişkene aktarır
                }
                $product_price[] = $cart_item['data']->get_price(); // sepetteki ürünleri $product_price değişkenine aktarır
            }
        
        if(count($matchingCat) >= 3 ){
            $discount = isset($product_price) ? min($product_price) : 0; // sepetteki en ucuz ürün
            
	    $cart->add_fee('3 adet üzeri 1 ürün ücretsiz', -$discount); // indirimi uygula
        }
    }
}
/* Add Cart Discount based on cart total items amount - 3 */

X’inci üründe Y indirim

En çok kullanılan e-ticaret kampanya örnekleri arasında yer alan İkinci üründe anında %50 indirim ya da üçüncü üründe anında %30 indirim gibi kampanyalar her zaman alıcılar tarafından rağbet görmektedir.

Sepete eklenen aynı üründen birden fazla eklenirse uygulanacak olan indirim
ikinci ürüne anında indirim kampanyası ile yapacağınız alışverişlerde 2.ürüne ekstra indirim avantajı ile sahip olabilirsiniz

Örnek 1: A ürün x 3 adet ise 30 TL indirim uygula
Örnek 2: A ürün x 3 adet ise %30 indirim uygula

woocommerce kampanya oluşturma
/* 2. 3. 4.ürünlerde indirim*/
add_action( 'woocommerce_cart_calculate_fees', 'second_item_discount', 10, 1 );
function second_item_discount( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;
    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;
 
    $percentage = 10; // yüzde miktarı
    $discount   = 0; //indirim
 
    // sepet öğeleri döngüsü
    foreach ( $cart->get_cart() as $cart_item ) {
        // miktarı 1 den fazla olanlar
        if( $cart_item['quantity'] > 1 ){
            // ürün fiyatına %10 indirim
            $discount += wc_get_price_excluding_tax( $cart_item['data'] ) * $percentage / 100;
        }
    }
    if( $discount > 0 )
        $cart->add_fee( __( '2. ürün indirimi', 'woocommerce' ) , -$discount );
}
/* 2. 3. 4.ürünlerde indirim*/
 

amazon.com.tr olan kampanyanın örneği

Yukarıda kampanyanın bir başka örneğini ise amazon web sitesinde görmekteyiz. Amazon’daki kampanya ile bizim oluşturduğum kampanyanın mantığı aynıdır. Sadece aynı ya da farklı ürünlere ve sepette en fazla 20 ürüne kadar indirimi destekliyor olması koşulu vardır, bu sorunu şimdi aşağıda vereceğim kod ile bire bir Amazon’daki kampanya ile aynı olmuş olacak. Ayrıca amazon’da prime üyeliklerine özel indirim yapmış benim yazdığım kodda ise bütün üyeler geçerlidir.
Woocommerce’da Prime gibi üyelere özel indirim yapmayı başka bir blog yazımda anlatacağım.

/* amazon kampanya örneği -> 5 ve üzeri ürün alana %5 indirim, 10 ve üzeri %10 indirim (Limit: en fazla 20 ürün için geçerlidir.)*/
add_action( 'woocommerce_cart_calculate_fees', 'second_item_discount', 10, 1 );
function second_item_discount( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;
    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;
	
	global $woocommerce;

    $percentage = 0; // yüzde miktarı
    $discount   = 0; //indirim
	
	$categories = [31, 52];
	
	$cartTotalProduct =0;
    // sepet öğeleri döngüsü
    foreach ( $woocommerce->cart->get_cart() as $cart_item ) {
		if ( has_term( $categories, 'product_cat', $cart_item['product_id'] ) ) { //kategoriler ile eşleşen ürünler varmı
			$cartTotalProduct += $cart_item['quantity'];
		}
    }
	

	// miktarı 5 den fazla olanlar
	if( in_array($cartTotalProduct, range(5, 9)) ){
		$percentage = 5; // yüzde miktarı %5 olarak ayarladık
		$discount += intval($woocommerce->cart->get_cart_contents_total()) * $percentage / 100; // ürün fiyatına %5 indirim
	}elseif (in_array($cartTotalProduct, range(10, 20)) ) {
		$percentage = 10; // yüzde miktarı %10 olarak ayarladık
		$discount += intval($woocommerce->cart->get_cart_contents_total()) * $percentage / 100; // ürün fiyatına %10 indirim
	}
			
    if( $discount > 0 )
        $cart->add_fee( __( $percentage.' ve üzeri %'.$percentage.' indirimi', 'woocommerce' ) , -$discount ); // indirimi uygula
}
/* amazon kampanya örneği -> 5 ve üzeri ürün alana %5 indirim, 10 ve üzeri %10 indirim (Limit: en fazla 20 ürün için geçerlidir.)*/

X Al Y öde kampanyası

3 al 2 öde kampanyası “2. üründe X indirim” kampanyasının neredeyse aynısıdır arasındaki fark ise hesaplama farkıdır. Yani 100 TL’lik üründen 3 adet alındığında 1 ürün kadar indirim yapmak.

Örnek 1: 3 Al 2 Öde Kampanyası
Örnek 2: 4 Al 2 Öde Kampanyası

/* 3 al 2 öde*/
add_action( 'woocommerce_cart_calculate_fees', 'buy_two_pay_one', 10, 1 );
function buy_two_pay_one( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;
	
    $quanity = 3; // 3 al 
    $pay = 2; // 2 öde
    $diff = $quanity - $pay; //fark
	
    if ( did_action( 'woocommerce_before_calculate_totals' ) >= $quanity )
        return;
	
    $discount   = 0; //indirim değişkeni
	
    // sepet öğeleri döngüsü
    foreach ( $cart->get_cart() as $cart_item ) {
        // miktarı 3 den fazla olanlar
        if( $cart_item['quantity'] >= $quanity ){
            // ürün fiyatına %10 indirim
            $quanityTotal = wc_get_price_excluding_tax( $cart_item['data'] );
            $discount += $quanityTotal * $diff;
        }
    }
    
    //$indirim değişkeni 0'dan büyük ise indirimi uygula
    if( $discount > 0 )
        $cart->add_fee( __('3 Al 2 Öde', 'woocommerce' ) , -$discount );
}
/* 3 al 2 öde*/

X TL ve üzeri alışverişinizde Y indirim

Sepetinizin asgari tutarına göre belirleyebileceğiniz öze kampanyalar oluşturmanızı sağlar.
örnek 1: 150 TL ve üzeri alışverişlerinizde 15 TL indirim.
örnek 2: 250 TL ve üzeri alışverişlerinizde %15 indirim.
örnek 3: 500 TL ve üzeri alışverişlerinizde %20 indirim.

/* x TL ve üzeri alışverişinizde x indirim*/
add_action( 'woocommerce_cart_calculate_fees', 'discount_based_on_total',25, 15 );
function discount_based_on_total( $cart ) {
        if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
 
        $total = $cart->cart_contents_total;
 
        if( $total >= 150  && $total < 250  ){
            // 150 TL ve 249 TL arasındaki sepet toplamına 15 TL indirim uygula
            $discount =  15;
            $cart->add_fee( __('15 TL İndirim', 'woocommerce'), -$discount );
        }else if( $total >= 250  && $total < 500 ){
            // 250 TL ve 499 TL arasındaki sepet toplamına %15 indirim uygula
            $discount = $total * 0.15;
            $cart->add_fee( __('%15 İndirim', 'woocommerce'), -$discount );
        }else if( $total >= 500 ){
            //500 TL ve üzeri alışverişe %20 indirim uygula
            $discount = $total * 0.20;
            $cart->add_fee( __('%20 İndirim', 'woocommerce'), -$discount );
        }    
}
/* x TL ve üzeri alışverişinizde x indirim
X TL ve üzeri Y indirim

İlk alışverişe özel ücretsiz kargo

Sitenizden ilk defa alışveriş yapacak müşterileriniz için ilk alışverişe özel kargo kampanyası oluşturabilirsiniz.
Örnek: İlk alışverişinize özel ücretsiz teslimat.

/* ilk siparişe özel ücretsiz kargo*/
 
add_action('woocommerce_cart_calculate_fees' , 'vono_first_orders_free_shipping', 10, 14);
function vono_first_orders_free_shipping( $cart_object ){
 
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;  
           
        if(is_user_logged_in()) {
 
            // Getting "completed" customer orders
            $customer_orders_check = get_posts( array(
                'numberposts' => -1,
                'meta_key'    => '_customer_user',
                'meta_value'  => get_current_user_id(),
                'post_type'   => 'shop_order', // WC orders post type
                'post_status' => 'wc-completed' // Only orders with status "completed"
            ) );
 
            // Orders count
            $customer_orders_count_shipping = count($customer_orders_check);    
 
            // WC()->cart->get_shipping_taxes(); #kargo vergisi olursa
            // First customer order
            if( empty($customer_orders_check) || $customer_orders_count_shipping == 0 ){
                $free_shipping_text = __('Ücretsiz kargo', 'woocommerce');
                $shipping_discount = -(WC()->cart->get_shipping_total());
            }
 
            // Apply discount
            if( ! empty( $shipping_discount ) ){
                // Note: Last argument is related to applying the tax (false by default)
                $cart_object->add_fee( $free_shipping_text, $shipping_discount, false);
            }
 
         }
     
}
/* ilk siparişe özel ücretsiz kargo*/

1. 2. 3. siparişlere özel indirim

Sitenizden ilk defa alışveriş yapacak müşteriler için alışverişi cazip kılacak kampanyalardan biridir. Ayrıca sitenizden ilk defa alışveriş yapan müşterileriniz ikinci alışverişe özel ekstra indirim avantajı sağlayarak sadık müşteriler elde ederek yeniden alışverişi sağlayabilirsiniz.

Örnek 1: ilk alışverişinize özel 10 TL indirim.
Örnek 2: ilk alışverişinize özel % 10 indirim.
Örnek 3: 2. alışverişinize özel 30 TL indirim.
Örnek 4: 2. alışverişinize özel % 30 indirim.

/* 1. 2. ve 3. siparişlerdeki indirim*/
add_action('woocommerce_cart_calculate_fees' , 'discount_based_on_customer_orders', 10, 1);
function discount_based_on_customer_orders( $cart_object ){

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;  
	
    //kullanıcı giriş yapmış ise
	if(is_user_logged_in()) {
	
		// tamamlanmış siparişleri getir
		$customer_orders = get_posts( array(
			'numberposts' => -1,
			'meta_key'    => '_customer_user', 
			'meta_value'  => get_current_user_id(), // giriş yapan kullanıcı
			'post_type'   => 'shop_order', // WC sipariş
			'post_status' => 'wc-completed' // tamamlanmış siparişler
		) );

		// sipariş toplamı
		$customer_orders_count = count($customer_orders);

		// sepet toplamı
		//$cart_total = WC()->cart->get_total(); // or WC()->cart->get_total_ex_tax()
		$cart_con_total= WC()->cart->cart_contents_total;

		// 1. sipariş indirimi
		if( empty($customer_orders) || $customer_orders_count == 0 ){
			$discount_text = __('İlk siparişinize özel indirim', 'woocommerce');
			$discount = -((10 / 100) * $cart_con_total); # %10 indirim -> (10 / 100) * sepete toplamı
		} 
		// 2. sipariş indirim
		elseif( $customer_orders_count == 1 ){
			$discount_text = __('2. sipariş indirimi', 'woocommerce');
			$discount = -(20); # 20 TL indirim
		} 
		// 3. sipariş indirimi
		elseif( $customer_orders_count == 2 ){
			$discount_text = __('3. sipariş indirimi', 'woocommerce');   
			$discount = -((50 / 100) * $cart_con_total); # %50 indirim -> (50 / 100) * sepete toplamı
		}

		// indirimi uygula
		if( ! empty( $discount ) ){
			// Note: Last argument is related to applying the tax (false by default)
			$cart_object->add_fee( $discount_text, $discount, false);
		}
	}
}
/* 1. 2. ve 3. siparişlerdeki indirim*/

Ödeme yöntemlerine göre indirim

Müşterileriniz için farklı ödeme yöntemlerini seçerek indirim sağlayabilirsiniz.

Örnek 1: Havale/EFT ile yapacağınız ödemelerde %5 indirim.
Örnek 2: Kapıda ödeme ile yapacağınız ödemelerde %3 indirim.

ödeme yöntemi kampanya
Bu section kullandığınız eklenti ismine göre değişkenlik göstermektedir.
<?php
/* eft havale %3 indirim*/
add_action('woocommerce_cart_calculate_fees', 'add_convenience_fee_for_specific_gateway');
function add_convenience_fee_for_specific_gateway(){
	
    $bacsDiscount = 5; #eft havale indirim tutarı (%5)
    $bacsDiscount = 3; #Kapıda ödeme indirim tutarı (%3)
    $cardDiscount = 1; #kredi kartı ile ödeme indirim tutarı (%1)
	$gateway = WC()->session->get('chosen_payment_method');
	
    if ($gateway == 'bacs') { // EFT/havale ödemelerinde yapılacak indirim
        //eft havale indirim
		WC()->cart->add_fee('EFT/Havale İndirim (%3)', -(WC()->cart->get_cart_contents_total() / 100)* $bacsDiscount );
	}elseif ($gateway == 'cod') { // kapıda ödeme seçeneğinde yapılacak indirim.
        //Kapıda ödeme indirim
		WC()->cart->add_fee('Kadıda Ödeme indirim', (WC()->cart->get_cart_contents_total() / 100)* $codDiscount);
	}elseif ($gateway == 'sanalpospro') { // Kredi kartı ödemelerinde yapılacak indirim
        // kredi kartı indirim
		WC()->cart->add_fee('Kredi kartı Ödeme indirim', (WC()->cart->get_cart_contents_total() / 100)* $cardDiscount);
	}
	
}
 
// ödeme yöntemi seçilme yapıldıktan sonra yukarıdakilerini uygula
add_action('woocommerce_review_order_before_payment', 'refresh_checkout_on_gateway_change');
function refresh_checkout_on_gateway_change(){
?>
<script type="text/javascript">
	(function($){
		$( 'form.checkout' ).on( 'change', 'input[name="payment_method"]', function() {
 			$(document.body).trigger('update_checkout');
		});
	})(jQuery);
</script>
<?php
}
/* eft havale %3 indirim*/

Hızlı İndirim sayacı 

Hızlı satışlar, mevcut müşterileri hızlı aksiyon almaya yönlendirmek için mükemmel bir kampanya yöntemidir. Özellikle indirim ve kampanya dönemlerinde tüketicilerin daha hızlı bir şekilde eyleme geçmelerini sağlayarak, ürünleri sepetlerine eklemelerini sağlamak için ürün ve kategori sayfalarında her ürün için bir geri sayım sayacı kullanabilirsiniz..

Sayacın çalışması için öncelikle ürünlerde indirim zamanlaması yapılmalıdır. Zamanlamanın nasıl yapıldığını aşağıdaki gösterilmiştir.

woocommerce sale scheduler
<?php
/* hızlı indirim sayacı*/
function product_sales_timer() {  
    global $product;
    $sale_date = get_post_meta( $product->get_id(), '_sale_price_dates_to', true );
   
    if ( !empty($sale_date) ) {
        ?>
        <script>
            // geri sayaca tarih ekle
            var countDownDate = <?php echo $sale_date; ?> * 1000;
 
            // her saniye yineleme
            var x = setInterval(function() {
                // bugün
                var now = new Date().getTime();
                   
                // tarih farkı
                var distance = countDownDate - now;    
                   
                //gün-saat-dakika-saniye
                var days = Math.floor(distance / (1000 * 60 * 60 * 24));
                var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
                var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
                var seconds = Math.floor((distance % (1000 * 60)) / 1000);
                   
                // id="saleend"
                document.getElementById("saleend").innerHTML = days + "G " + hours + "S " + minutes + "D " + seconds + "S ";
                   
                // geri sayım bittiyse
                if (distance < 0) {
                    clearInterval(x);
                    document.getElementById("saleend").innerHTML = "Bu ürünün indirimli satış  süresi doldu!";
                }
            }, 1000);
        </script>
 
        <!-- geri sayımın görüntülendiği yer -->
        <p id="saleend" style="color:#fff;background:#00816A;padding: .3em .7em;display: block;border-radius:6px;font-weight: bold;font-size:150%;text-align:center"></p><br>
        <?php
    }
}
add_action( 'woocommerce_after_add_to_cart_form', 'product_sales_timer', 20 );
/* hızlı indirim sayacı*/

Ürün sayfasında farklı bir yere yerleştirmek için aşağıdaki linke bakabilirsiniz.
https://www.businessbloomer.com/woocommerce-visual-hook-guide-single-product-page/

Unutmayın, kullanıcıya her noktadan temas etmelisiniz. Bazen indirimlerle, bazen reklam metinleriyle, bir şekilde dokunduğunuz kullanıcıyı kendinize çekmelisiniz. Daha sonrasında iyi bir analiz ile kendi ihtiyaçlarınızı belirleyebilirsiniz. Fark ettiyseniz bütün kampanya modelleri bir ihtiyaçtan dolayı ortaya çıkmıştır. İhtiyacınız olduğunu tespit ettiğinizde kampanya yapmaktan çekinmeyin.

Wocoomerce

Arkadaşlar yazımızda hata veya önerileriniz olursa lütfen yorum yapmayı unutmayın.
Unutmayın! Paylaşmak; kazanmanın en hızlı ve kolay yoludur. Bir sonraki blog’ta görüşmek dileğiyle esen kalın.

Bu makale yardımcı oldu mu?
EvetHayır

Paylaş

43 yorum

  1. Merhaba x kategoride 2. ürün 100 TL şeklinde kodu nasıl yaparız. 3 normal fiyat 4. atınca yine 100tl olacak

  2. Hocam yararlı bir makale olmuş çok teşekkürler. Peki şunu yapabilirmiyiz: A,B,C kategorilerinden bir ürün aldığında X kategorisindeki ürün 150 tl gibi birşey yapabilirmiyiz yardımcı olursanız sevinirim.

  3. Hocam peki aynı kategoriden 3 al 2 öde için ne yapmak gerekiyor?
    Aynı üründen 3 tane alındığında bir indirim sağlamıyor

    1. Merhaba dostum, aynı kategori işlemi için Kategori bazlı sepette farklı X adet ve üzeri 1 ürün ücretsiz başlığına bakabilirsin. Burada dikkat etmen gereken has_term( [‘category1′,’category2’], ‘product_cat’, “ürün veya post id”) fonksiyonunu kullanarak kategori bazlı işlem yapabilirsin. İyi çalışmalar dilerim 🙂

  4. Merhaba arkadaşım,
    Şöyle bir koda ihtiyacımız var.
    X al Y öde kampanyası fakat bunu gruplandırmak istiyorum.
    Örneğin;
    A Grubu: (10,11,12,13,14,15) / Ürün idleri
    A Grubu Kampanyası: 3 al 2 öde
    Çalışma Prensibi: A Grubunda Idleri girilen ürünlerden aynı yada farklı olarak sepete eklendiyse 3 al 2 öde. (A grubundaki en ucuz ürün)

    Gene aynı sepette;
    B Grubu: (20,21,22,23,24,25) / Ürün idleri
    B Grubu Kampanyası: 4 al 3 öde
    Çalışma Prensibi: B Grubunda Idleri girilen ürünlerden aynı yada farklı olarak sepete eklendiyse 4 al 3 öde. (B grubundaki en ucuz ürün)

    Gene aynı sepette;
    C Grubu: (30,31,32,33,34,35) / Ürün idleri
    C Grubu Kampanyası: 3 al 2 öde
    Çalışma Prensibi: C Grubunda Idleri girilen ürünlerden aynı yada farklı olarak sepete eklendiyse 3 al 2 öde. (C grubundaki en ucuz ürün)

    Özel not: Sepet toplamında Ücretsiz Kargo baremini tüm indirimler uygulandıktan sonra kalan tutara göre hesaplaması gerekiyor.

    Toplam inidirmleride sepette ayrı ayrı yazarsa süper olur.
    A Grubu Kampanyası İndirimi
    B Grubu Kampanyası İndirimi
    C Grubu Kampanyası İndirimi

  5. Hocam çok güzel bir makale olmuş ellerinize sağlık ancak sizden birşey istiyorum.
    3 al 2 öde kampanyası yaptım belirli katagoriye uyguladım ve 400 tl üzeri alışverişte ücretsiz kargo yaptım sorunsuz çalışıyor.

    şöyle birşey istiyorum 400 tl üzeri alıverişlerde ücretsiz kargo olacak ancak ara toplam değil de indirim olduntan sonraki fiyatı almasını istiyorum
    mesela 3 al 2 öde olan ürün 100 tl 3 al 2 öde de 200 tl ödemesi gerekiyor bunda kargo ücreti olacak ancak 600 tl ürün 400 tl ye düşüyor bu kargo ücretsiz olacak yardımcı olabilir misiniz

    1. Merhaba dostum değerli yorumun için teşekkür ederim. Dostum X TL üzeri alışveriş kargo ücretsiz için ücretisz kargo bu bağlantıdan ulaşabilirsin gerekliği değişikliği aşağıdaki koddan yardım alarak yapabiliirsin.
      ara toplam ve genel toplam için aşağıdaki kodları kullanabilirsin.

        $cart = WC()->cart;
      
      // Sepetteki ara toplamı al
      $subtotal = $cart->get_subtotal();
      
      // Sepetteki genel toplamı al
      $total = $cart->get_total();
  6. Üstadım kodları kategoriye göre ayarlayamaz mıyız?
    Her kategori için ayrı indirim olsa çok daha hoş olurdu.
    Mesela x kategorisinden 3 alana 1 hediye veya
    Y kategorisinde tüm ürünlerde 2. Ye %50 indirim gibi gibi…

    1. Merhaba dostum, bunun için bu yazıdaki “Kategori bazlı sepette farklı X adet ve üzeri 1 ürün ücretsiz” alt başlıkta bulunan has_term yapısını kullanarak yapabilirsin.

  7. Üstad, çok güzel bir makale olmuş. Sayenizde eklentisiz indirim ayarları ayarlayabildim. Çok teşekkür ederim.

  8. Hızlı İndirim sayacı ileri tarihli bir zamanlama yapsam bile direkt yaptığım gün sayacı başlatıyor
    örnek: 12.12.2023 – 13.12.2023 yapıyorum ürüne girdiğim an 24 saat saymaya başlıyor

    1. Merhaba dostum, yorumun için teşekkür ederim. Hızlı indirim sayacında başlangıç tarihi yoktur sadece bitiş tarihi vardır. Başlangıç bugünden başlat bitiş ise belirlediğiniz tarihe kadar sayım yapar.

  9. Selamlar, Çalışmalarınız çok değerli, teşekkür ediyorum.

    Aynı üründen 20 adet ve üzeri alımlarda ücretsiz kargo olmasını istiyorum. Bunu nasıl sağlayabilirim?

  10. merhabalar, faydalı bilgileriniz için teşekkür ederiz. benim sormak istediğim soru şuydu. amazon kampanya örneğini uyguladım. x kategorisi için 2 ve üzeri ürünlerde %10 indirim yapıyoruz. bu kod çalıştı. Ama ben bir de Y kategorisi için aynı işlemi yapmak istiyorum. Tekrar aynı kodu yapıştırdığımda hata veriyor. hata olarak “function second_item_discount( $cart ) {” kodu gösteriyor. burada ne yapabiliriz. farklı farklı kategorilerde farklı indirimler yapmak istiyorum kısaca.

    1. Merhaba çok kategori için aşağıdaki yapıyı kullanman gerekmektedir.

      
      $categories = [31, 52];
      foreach ( $woocommerce->cart->get_cart() as $cart_item ) {
      		if ( has_term( $categories, 'product_cat', $cart_item['product_id'] ) ) { //kategoriler ile eşleşen ürünler varmı
      			// sepet için indirim işlemlerini buraya eklenecek
      		}
          }
      
  11. Merhabalar,

    öncelikle konunuz için teşekkür ederim. Çok faydalı bilgiler sunmuşsunuz.
    Benim de bir sorum olacaktı.
    Şimdi belirli ürün kategorisi için örneğin pantolon 5 alım üstünde %5 – 10 ürün alım üstü için de %10 indirim verdim. Bunu kod satırına ekledim.
    Bir de 300tl üzeri alışverişlerde 50tl 1000tl üzeri alışverilerde 300tl indirim diye ayarladım.

    Sepete pantolon ve farklı ürünler ekleyince hem % indirimi yapıyor hem tl indirimi yapıyor.
    Sepet görseli: https://hizliresim.com/n8mkesr

    Burada ne yapabiliriz.

  12. Merhaba, emekleriniz için teşekkür ederim
    çok başarılı olmuş. Sizin kurallarınızda, aynı üründen olmak şartıyla 2. 3. 4. Üründe indirim uygulaması var. Benim de şöyle bir şeye ihtiyacım var: aynı ya da farklı bir ürün olması farketmeksizin sepette 2. Ürüne (ucuz olana) %10 veya 50tl indirim nasıl tanımlarım? 3. Ürüne ( ucuz olana) %20 veya 100 tl gibi indirim tanımlamak istiyorum. Yardımcı olmanı rica ediyorum

  13. amazon kampanyası müthiş çok teşekkürler..

    3 lü alımlarda %5 indirim, 6 li alımlarda %10, 9 lu alımlarda %15, 12 li alımlarda %20 indirim olarak kodu ayarlayamadım rica etsem yardımcı olabilirmisiniz. Çok teşekkürler..

    1. Merhaba dostum değerli yorumun için çok teşekkür ederim, yoğunluğum dolayı geç cevap verdim özür diliyorum.
      sorunun cevabı;

      add_action('woocommerce_cart_calculate_fees', 'vono_multiple_item_discount', 10, 1);
      
      function vono_multiple_item_discount($cart)
      {
        if (is_admin() && !defined('DOING_AJAX')) {
          return;
        }
        if (did_action('woocommerce_before_calculate_totals') >= 2) {
          return;
        }
      
        $discount   = 0; // İndirim
        $total      = $cart->cart_contents_total; // Sepet toplamı
        $discountText = "";
      
        $item_count = 0;
      
        foreach ($cart->get_cart() as $cart_item) {
          $item_count += $cart_item['quantity'];
        }
      
        if ($item_count >= 3 && $item_count <= 5) {
          $discount = $total * 0.05; // %5 indirim
          $discountText = "3-5 ürün alımlarında %5";
        } elseif ($item_count >= 6 && $item_count <= 8) {
          $discount = $total * 0.10; // %10 indirim
          $discountText = "6-8 ürün alımlarında %10";
        } elseif ($item_count >= 9 && $item_count <= 11) {
          $discount = $total * 0.15; // %15 indirim
          $discountText = "9-11 ürün alımlarında %15";
        } elseif ($item_count >= 12) {
          $discount = $total * 0.20; // %20 indirim
          $discountText = "12 ve üzeri ürün alımlarında %20";
        }
      
        if ($discount > 0) {
          $cart->add_fee(__($discountText, 'woocommerce'), -$discount);
        }
      }
      
      
      1. Üstadım bu kodu tek bir ürüne uyarlayamaz mıyız? Ben ürün toplamında değl ürün miktarında indrm yapmak istiyorum

  14. Tekrar Merhabalar,

    Kategori ile eşleşen indirim işime yaradı ancak şunun içinde çıkamadım.

    Kategori ile eşleşiyor burası süper + 2 tane aynı üründen alırsan uygulamıyor.
    ve ben tamamen indirmesi yerine örn : 2. ürün 10 tl olsun istiyorum. işin içinden çıkamadım destek verir misin.

    hataydan sevgiler

  15. Hocam Selamlar,

    X kategoride 2. ürün alana 2. ürün 50 tl koduna ihtiyacım var lütfen destek olur musun

    1. Merhaba dostum özür dilerim geç cevap verdiğim bu aralar biraz yoğundum.
      sorunun cevabı şuşekilde;

      add_action('woocommerce_cart_calculate_fees', 'vono_second_item_discount', 10, 1);
      function vono_second_item_discount($cart)
      {
        if (is_admin() && !defined('DOING_AJAX'))
          return;
      
        if (did_action('woocommerce_before_calculate_totals') >= 2)
          return;
      
        $categories = array(36, 25);
        $discount   = 0; //indirim
      
        // sepet öğeleri döngüsü
        foreach ($cart->get_cart() as $cart_item) {
          if (has_term($categories, 'product_cat', $cart_item['product_id'])) { //kategoriler ile eşleşen ürünler varmı
            // miktarı 1 den fazla olanlar
            if ($cart_item['quantity'] > 1) {
              // 2.ürüne 50 TL indirim
              $discount .= 50;
            }
            // daha fazla miktar eklemek için için $cart_item['quantity'] ifadesini if koşuluyla genişletebilir sin
          }
        }
        if ($discount > 0)
          $cart->add_fee(__('2. ürün 50 TL', 'woocommerce'), -$discount);
      }
  16. Merhabalar,

    3 al 2 öde kampanyasında vergiyi nasıl iptal edebiliriz?
    3 adet aynı ürün alımında indirim yapmıyor onu nasıl ayarlayabiliriz hocam,
    Ayrı ayrı kategorilerde 3 tane ekleyince indirim yapıyor fakat aynı ürün 3 adet olunca yapmıyor

    Teşekkürler

    1. Yorumun için teşekkür ederim.
      1-) 3 al 2 öde kampansında vergiyi kaldırmak için

       add_filter('wc_tax_enabled', '__return_false');  

      kodunu $discount değişkenin altına yazarak iptal edebilirsin.
      2-) 3 al 2 öde kampanyasının mantığı aynı üründen 3 adet alınırsa 1 adet indirim verecek şekilde ayarlanmıştır.
      Resim için: 3 al 2 öde kampanyası

      1. Merhabalar hocam,

        Şu an farklı 3 adet ürün eklendiğinde indirim yapıyor, aynı üründen 3 tane daha eklese kampanya aktif olmuyor. Sadece şu an 3 farklı üründe aktif olmaktadır, aynı üründen 3 tane daha eklese aktif nasıl yapabiliriz hocam.

        Teşekkürler

      2. Hocam Vergi kalkmadı

        add_action(‘woocommerce_cart_calculate_fees’ , ‘cart_items_discount’, 10, 2);
        function cart_items_discount( $cart ){
        if ( is_admin() && ! defined( ‘DOING_AJAX’ ) )
        return;

        global $woocommerce;

        // sepette 3 veya daha fazla ürün olduğunda
        if( count($cart->get_cart()) >= 3){

        ## indirim hesaplaması ##
        if ( sizeof( $woocommerce->cart->get_cart() ) > 0 ) {
        foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
        $_product = $values[‘data’];
        $product_price[] = get_option(‘woocommerce_tax_display_cart’) == ‘excl’ ? $_product->get_price_excluding_tax() : $_product->get_price_including_tax(); //Sepetteki tüm ürün fiyatlarını diziye aktar
        }
        }
        $discount = min($product_price); // sepetteki en ucuz ürün

        // indirim uygula
        $cart->add_fee( ‘3 Al 2 Öde’ , -$discount);
        add_filter(‘wc_tax_enabled’, ‘__return_false’);
        }
        }

  17. Örnek: A ürün(150 TL), B ürün(100 TL)[en ucuz], C ürün (230 TL) = Toplam 480 TL -> sepet indirimi 100 TL

    /* Add Cart Discount based on cart total items amount – 2 */
    add_action(‘woocommerce_cart_calculate_fees’ , ‘cart_items_discount’, 10, 2);
    function cart_items_discount( $cart ){
    if ( is_admin() && ! defined( ‘DOING_AJAX’ ) )
    return;

    global $woocommerce;

    // sepette 3 veya daha fazla ürün olduğunda
    if( count($cart->get_cart()) >= 3){

    ## indirim hesaplaması ##
    if ( sizeof( $woocommerce->cart->get_cart() ) > 0 ) {
    foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
    $_product = $values[‘data’];
    $product_price[] = get_option(‘woocommerce_tax_display_cart’) == ‘excl’ ? $_product->get_price_excluding_tax() : $_product->get_price_including_tax(); //Sepetteki tüm ürün fiyatlarını diziye aktar
    }
    }
    $discount = min($product_price); // sepetteki en ucuz ürün

    // indirim uygula
    $cart->add_fee( ‘3 adet üzeri 1 ürün ücretsiz’ , -$discount);
    }
    }
    /* Add Cart Discount based on cart total items amount – 2 */

    bu örnekte kdv ekliyor bu kampanya tipini kdv hesaplaması yapmadan düzenleyebilirmisiniz?

      1. $discount = min($product_price); // sepetteki en ucuz ürün
        $discount = min($product_price)/1.20; // sepetteki en ucuz ürün
        yapınca e-fatura kesilirken kdv yi düzgün ayarlıyor demek istediğim buydu vergi oranları %20 olarak girildiğinde

  18. Faydalı bilgiler için çok teşekkür ederim. Sitemde yapmak istediğim sadece seçtiğim marka şartıyla 2.üründe belirlediğim miktarda indirim yapılması bunu nasıl yapabilirim acaba ? Cevabınız için şimdiden teşekkürler.
    Örnek olarak ;
    X Marka ürün 1000 TL
    2.3.4.5. X Marka başka ürünler, ürün başına 50 TL şeklinde indirim nasıl uygulayabilirim 🙂

    1. Merhaba Serkan, yorumunuz için teşekkür ederim!
      Woocommerce marka olmadığı ürün etiket yapısıyla yaptım.

      
      add_action('woocommerce_cart_calculate_fees', 'same_brand_discount', 10, 1);
      function same_brand_discount($cart)
      {
      	if (is_admin() && !defined('DOING_AJAX'))
      		return;
      	if (did_action('woocommerce_before_calculate_totals') >= 2)
      		return;
      
      	$discount   = 0; //indirim
      
      	$term = 'adidas'; //etiket ismi
      	$taxonomy = 'product_tag'; //ürün etiket
      
      	// sepet öğeleri döngüsü
      	foreach ($cart->get_cart() as $cart_item) {
      		// miktarı 1 ve 5 arası olanlar
      		if ($cart_item['quantity'] > 1 && $cart_item['quantity'] < 6) {
      
      			if (has_term($term, $taxonomy, $cart_item['product_id'])) {
      				// ürün başına 50 TL indirim
      				$discount += 50;
      			}
      		}
      	}
      
      	if ($discount > 0)
      		$cart->add_fee(__('marka indirimi', 'woocommerce'), -$discount);
      }
      

      Umarın doğru anlamışımdır.

  19. Merhaba, çok faydalı bir makale olmuş, elinize sağlık. Şöyle bir kampanya yöntemi yapabilir miyiz?
    Aynı Kategoriden aldığınız 2. ürün 5 TL (İlk ürünün fiyatı ne olursa olsun, aynı kategoride bulunan farklı bir ürün bile seçilse ikinciyi 5 TL’den satılacak)

Bir yanıt yazın

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