BOGO Çözümü
Genel olarak biliniyor ki, WooCommerce tabanlı sitelerde bazı özellikler için bir çok eklenti eklemek zorunda kalıyoruz. Bunların arasında WooCommerce site sahiplerini en çok zorlayanlar ise kampanya eklentileridir. Buradan hareketle kampanya eklentileri arasında en önemli olan BOGO çözümü yani “1 Alana 1 Bedava” özelliğine değinmek istiyorum.
E-ticaret sitelerinde kampanya ayarları gerçekten kafa karıştırıcı olabilmektedir. Hele ki bazı ayarları tekrar tekrar yaptığınızda bir önceki ayarlar da bozulabilmektedir. Çoğu zaman özellikle bir kaç adım önce hangi ayarı yaptığımızı da unutuyoruz. İşte bu kaostan bir az olsun sizi kurtaracağını düşündüğüm bir yazı hazırlamak istedim. Yazı içeriğinde sunacağım kod dizilimleri denenmiştir. Burada vereceğim içerik kodları function.php yi etkiler. Ama siz yine de olası bir sorunu engellemek ve geri dönmek için function.php nin bir yedeğini almayı unutmayın!
BOGO Nedir?
Çözümü sunmadan önce BOGO’nun ne anlama geldiğinden kısaca bahsetmek faydalı olacaktır. BOGO, İngilizce “Buy One, Get One” ifadesinin kısaltması olup, Türkçe’de “1 Alana 1 Bedava” olarak bilinen popüler bir satış stratejisidir. Çoğu e-ticaret ve pazaryeri platformunda sıkça kullanılan bu kampanya, özellikle rekabetin yüksek olduğu sektörlerde müşteri çekme ve sadık müşteri kitlesi oluşturma amacıyla tercih edilir. BOGO kampanyasıyla birlikte kullanıcılar, satış grafiklerinde hızlı bir yükseliş gözlemleyebilmekte ve mevcut müşteri portföylerini güncelleyerek listelerine yeni müşteri eklemektedirler. BOGO, alışveriş sepetinde daha fazla ürün olmasını teşvik ederken, müşteri memnuniyetini de artırarak markanın tanınırlığını güçlendirmeye yardımcı olmaktadır.
Ücretsiz BOGO Çözümü kodları nedir?
Gelelim, ücretsiz BOGO çözümü nasıl yapılır sorusunun cevabına. Sorun şu ki, WooCommerce tabanlı sitelerde kullanılan eklentiler çoğu istisna noktasında çözüm olmaktan çok sorun olmaya başlıyor. Genel olarak ücretsiz sunulan özelliklerde bir kaç özellik birlikte ya da tek tek ayarlanabilmektedir. Bunların başlıcaları;
- Kendi kampanyanı oluştur: Bir ürünün kendisinde ya da varyantlarında uygulanabilen sepette indirim özelliği
- Sepette fiyat indirimi: Sepete eklenen ürünlerde, ürün bedeli üzerinden fiyat indirimi
- X al Y öde: X ürünü alana Y ürünü sepette Y fiyata kampanyası
- X alana Y bedava: X ürünü alana Y sepette bedava (farklı ürün seçeneği şartı)
- Sepette %X: Bazı ürünlerde sepette tutar üzerinden yüzdelik indirimler
Herkes, bu gibi özelliklerin hepsi bir arada bulunan bir eklenti sahibi olmak istiyor. Umarım tüm taleplere göre cevap verebilen bir ücretsiz eklenti kodlayan da çıkar.
Şimdi, BOGO sorununu çözmek için kodlar üzerinde çalışalım. Bu, her webmaster için önemli bir gereklilik olarak karşımıza çıkmaktadır. Daha önce kurduğum bir e-ticaret sitesinde, sepette ‘1 Alana 1 Bedava’ kampanyası talep edilmişti. Bu amaçla çeşitli eklentileri araştırdım ve birçok eklenti denedim. Ancak, pek çok kişinin karşılaştığı sorunlarla ben de karşılaştım ve bir türlü istediğim BOGO çözümünü bulamadım.
Bunun üzerine yaptığım araştırmalarla bir kod dizilimine eriştim ve onu revize ederek demo sitelerimin birinde çalışıp çalışmadığını kontrol ettim. İşte BOGO kampanyası özelliğinin kodları:
function bogo_add_free_product($cart_item_key, $product_id, $quantity) {
$category_slug = 'kategori-kisa-adi'; // Kategori kısa adını buraya ekleyin
// Ürün bu kategoriye ait mi kontrol et
if (has_term($category_slug, 'product_cat', $product_id)) {
$found = false;
foreach (WC()->cart->get_cart() as $cart_item) {
if (isset($cart_item['bogo_free']) && $cart_item['bogo_free'] === true && $cart_item['product_id'] == $product_id) {
$found = true;
break;
}
}
if (!$found && $quantity > 0) {
WC()->cart->add_to_cart($product_id, $quantity, 0, array(), array('bogo_free' => true, 'linked_item' => $cart_item_key));
}
}
}
add_action('woocommerce_add_to_cart', 'bogo_add_free_product', 10, 3);
function remove_bogo_if_original_removed($cart_item_key) {
foreach (WC()->cart->get_cart() as $key => $item) {
if (isset($item['bogo_free']) && $item['bogo_free'] === true && isset($item['linked_item']) && $item['linked_item'] == $cart_item_key) {
WC()->cart->remove_cart_item($key);
}
}
}
add_action('woocommerce_cart_item_removed', 'remove_bogo_if_original_removed', 10, 2);
function adjust_bogo_price($cart_object) {
foreach ($cart_object->get_cart() as $cart_item) {
if (isset($cart_item['bogo_free']) && $cart_item['bogo_free'] === true) {
$cart_item['data']->set_price(0);
}
}
}
add_action('woocommerce_before_calculate_totals', 'adjust_bogo_price');
function update_bogo_quantity($cart_item_key, $quantity) {
foreach (WC()->cart->get_cart() as $key => $item) {
if ($item['key'] === $cart_item_key && !isset($item['bogo_free'])) {
foreach (WC()->cart->get_cart() as $bogo_item) {
if (isset($bogo_item['bogo_free']) && $bogo_item['bogo_free'] === true && $bogo_item['linked_item'] == $cart_item_key) {
WC()->cart->set_quantity($bogo_item['key'], $quantity);
}
}
}
}
}
add_action('woocommerce_after_cart_item_quantity_update', 'update_bogo_quantity', 10, 2);
function sync_free_and_paid_product_quantity($cart_item_key) {
$cart_item = WC()->cart->get_cart_item($cart_item_key);
// Eğer ücretsiz ürünse, ücretli ürün adedi ile eşitle
if (isset($cart_item['bogo_free']) && $cart_item['bogo_free'] === true) {
$linked_key = $cart_item['linked_item'];
$linked_item = WC()->cart->get_cart_item($linked_key);
if ($linked_item) {
$free_quantity = $cart_item['quantity'];
$paid_quantity = $linked_item['quantity'];
// Eğer ücretsiz ürün sayısı değişmişse, ücretli ürün adedini aynı yap
if ($free_quantity != $paid_quantity) {
WC()->cart->set_quantity($linked_key, $free_quantity);
}
}
}
}
add_action('woocommerce_after_cart_item_quantity_update', 'sync_free_and_paid_product_quantity', 10, 1);
Bu kod dizilimini function.php içindeki son satırın altına yerleştirmelisiniz. Kod diziliminin içeriğindeki bazı aşamaların açıklaması:
- Ürün Sepete Eklendiğinde:
- bogo_add_free_product: Ücretli ürün sepete eklendiğinde aynı üründen ücretsiz bir tane sepete ekliyor.
- Ürün Sepetten Silindiğinde:
- remove_bogo_if_original_removed: Ücretli ürün sepette silinirse, onunla bağlantılı ücretsiz ürün de siliniyor.
- Ürünlerin Fiyatları:
- adjust_bogo_price: Ücretsiz ürünlerin fiyatı otomatik olarak sıfırlanıyor.
- Adet Güncelleme:
- update_bogo_quantity: Ücretli ürünün adedi güncellendiğinde, ücretsiz ürün adeti de buna eşitleniyor.
- Ücretsiz Ürün Adeti Güncellenirse:
- sync_free_and_paid_product_quantity: Eğer sepette ücretsiz ürünün adeti değiştirilirse, ücretli ürünün adeti de buna otomatik olarak eşitleniyor.
Kod dizilimi işlevsellik olarak şunları da sağlıyor. Bazı kurnaz ve fırsatçı müşteriler sepette bedava adetleri üzerinde oynama yaparak 1 ana ürün ile 2 ya da daha fazla bedava ürün almaya çalışabilmektedir. Buradaki BOGO çözümü bu tür müşterilerinize bu imkanı sunmayı da engelliyor. Yani ücretsiz ürünlerden 1 den fazla tercih ettiğinde ana ürün sayısı da aynı oranda değişmektedir.
Bu kod dizilimi ile sizde sitelerinizde “aynı ürün” için “1 Alana 1 Bedava” kampanyası başlatabilirsiniz. Ancak WordPress, WooCommerce ve tema güncellemesi yaptığınızda kodların yerinde olup olup olmadığını kontrol etmeyi unutmamalısınız.
Kampanya aktivasyonları sitelerde trafiği arttıracağı için bu gibi farklı özellikler e-ticaret sitelerinde seo açısından da etkin olabilmektedir. Organik ziyaretçi sayılarınızda artış olduğunda da bunun sıralama sonuçlarına doğrudan etkisi olduğu unutulmamalıdır. Doğru uygulamalar çözüm olarak görülür. Ama güncellemelerde yine de kontrol etmekte fayda var.