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.
    • 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. (Yakında)

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 X adet farklı ürün üzeri 1 ürün ücretsiz

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

Örnek: A ürün(150 TL), B ürün(100 TL), 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( $cart->get_cart_contents_count() >= 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 */

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

woocommerce kampanya oluşturma

Ö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

/* 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*/
 

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.
/* 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..

/* 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.

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ş

Bir Cevap Yazın