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.


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!