Wordpress

Woocommerce ile Sonraki Siparişlerinize Özel İndirimler

Woocommerce ile Sonraki Siparişlerinize Özel İndirimler

Merhaba arkadaşlar bu yazımızda Woocommerce ile e-ticaret sitelerinde sıklıkla kullanılan “X TL ve üzeri alışverişde bir sonraki alışverişinize anında %Y indirim” veya “X TL ve üzeri alışverişde bir sonraki alışverişinize anında Y TL indirim” kampanya kurgu örneğinin Woocommerce’a nasıl dahil edeceğinizi göstereceğim. Keyifli okumalar.

kampanya kurguları
Örnek 1: 250 TL ve üzeri alışverişlerde bir sonraki alışverişinize özel %10 indirim
Örnek 2: 250 TL ve üzeri alışverişlerde bir sonraki alışverişinize özel 10 TL indirim.

Woocommerce sonraki siparişinize özel indirimler 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 takip ederek işlemi tamamlayabilirsiniz.

wordpress görünüm tema düzenleyici funciton php
woocommerce next order discount
add_action(' woocommerce_cart_calculate_fees', 'special_discount_next_order');

function special_discount_next_order(WC_Cart $cart)
{
    // kullanıcı giriş yapmışsa kampanya çalışır.
    if (!is_user_logged_in()) :
        return;
    endif;

    $vuser = get_current_user_id(); // Kullanıcı ID
    $campaignTotalLimit = 250; // kampanya alt limit koşulu
    $campaignStart = new DateTime("2022-11-10"); // kampanya başlangıç tarihi
    $campaignEnd   = new DateTime("2022-11-30"); // kampanya bitiş tarihi
    $date = wp_date('Y-m-d'); //wp date -> güncel tarih

    $args = array(
        'customer_id' => $vuser,
        'type'        => 'shop_order',
        'date_created' => $campaignStart->format('Y-m-d') . '...' . $campaignEnd->format('Y-m-d'), // kampaya tarihleri arasındaki siparişler.
        'orderby' => 'id',
        'order' => 'DESC',
        'limit' => 1, // Bütün liste
        'status' => 'completed', // Tamamlanmış siparişleri alır.
        'discount_total' => 250.00, // bu olayı tekrar araştır
    );

    $orders = wc_get_orders($args);

    if (count($orders) > 0) { // sipariş toplamları 0'dan büyükse

        // güncel tarih kampanya geçerlilik tarihi aralığında ise
        if ($date >= $campaignStart->format('Y-m-d') && $date <= $campaignEnd->format('Y-m-d')) {

            $conditionalList = array(); // sağlanan koşulları aktaracağımız değişken.
            foreach ($orders as $vitem) {
                // geçerli olan siparişler $conditionalList değişkenine aktarır.
                $conditionalList = array("order_id" => $vitem->get_id(), "total" => $vitem->get_total(), "status" => $vitem->get_status(), "email" => $vitem->get_billing_email());
            }


            if ($conditionalList['total'] >= $campaignTotalLimit) { // son sipariş 250 tl geçmiş ise
                $lastDiscount = $cart->subtotal * 0.2; // Sepet ara toplamın %20'i alır.
                //20 TL indirim yapmak için ise $cart->subtotal * 0.2 yerine 20 yazmanız yeterli olacaktır.
                $cart->add_fee("%20 indirim uygulandı sepetinize", -$lastDiscount); // İndirimi uygula
            }
        }
    }
}

Her kullanıcı bir kez kampanyadan yararlanması için

Burada diğer kod örneğinden farklı olarak her kullanıcının kampanyadan bir kez yararlanmasını sağlamak için user_meta fonksiyonunu kullandım.

add_action(' woocommerce_cart_calculate_fees', 'special_discount_next_order');  

function special_discount_next_order(WC_Cart $cart) {
	// kullanıcı giriş yapmışsa kampanya çalışır.
	if (!is_user_logged_in()) :
		return;
	endif;

	$vuser = get_current_user_id(); // Kullanıcı ID
	$campaignTotalLimit = 250; // kampanya alt limit koşulu
	$campaignStart = new DateTime("2022-11-10"); // kampanya başlangıç tarihi
	$campaignEnd   = new DateTime("2022-11-30"); // kampanya bitiş tarihi
	$date = wp_date('Y-m-d'); //wp date -> güncel tarih

	$args = array(
		'customer_id' => $vuser,
		'type'        => 'shop_order',
		'date_created' => $campaignStart->format('Y-m-d') . '...' . $campaignEnd->format('Y-m-d'), // kampaya tarihleri arasındaki siparişler.
		'orderby' => 'id',
		'order' => 'DESC',
		'limit' => 1,
	);

	$orders = wc_get_orders($args);



	if (count($orders) > 0) { // sipariş toplamları 0'dan büyükse

		// güncel tarih kampanya geçerlilik tarihi aralığında ise
		if ($date >= $campaignStart->format('Y-m-d') && $date <= $campaignEnd->format('Y-m-d')) {

			$conditionalList = array(); // sağlanan koşulları aktaracağımız değişken.
			foreach ($orders as $vitem) {
				// geçerli olan siparişler $conditionalList değişkenine aktarır.
				$conditionalList = array("order_id" => $vitem->get_id(), "total" => $vitem->get_total(), "status" => $vitem->get_status());
			}

			$vonoCampaign = get_user_meta($vuser, 'vono_campaign2022', true); 
			$againStatus = true;
			if (empty($vonoCampaign)) {
				update_user_meta($vuser, 'vono_campaign2022', $conditionalList['order_id']); // müşteri kampanyayı kullanmışsa buraya kaydedilir.
			} else {
				if ($vonoCampaign != $conditionalList['order_id']) {
					return; // garanti olması için fonksiyonunu durduruyoruz. 
					$againStatus = false;
				}
			}

			if ($againStatus && $conditionalList['order_id'] == 'completed') { // $againStatus ve son sipariş tamamlanmış ise 
				if ($conditionalList['total'] >= $campaignTotalLimit) { // son sipariş 250 tl geçmiş ise
					$lastDiscount = $cart->subtotal * 0.2; // Sepet ara toplamın %20'i alır.
//20 TL indirim yapmak için ise $cart->subtotal * 0.2 yerine 20 yazmanız yeterli olacaktır.
					$cart->add_fee("%20 indirim uygulandı sepetinize", -$lastDiscount); // İndirimi uygula
				}
			}
		}
	}
}

BKZ: https://developer.wordpress.org/reference/functions/update_user_meta/

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 makalede görüşmek dileğiyle esen kalın.

İçeriğimi beğendin mi? Bana destek olup bir kahve ısmarlayabilirsiniz. Çok teşekkür ederim!

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

Paylaş

Bir yanıt yazın

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