Sepette Belirli Bir Kategoriden Ürün Varsa Başka Kategoriden Ürün Eklenmesin

0

WordPress site sahipleri çalıştırdıkları e-ticaret siteleri için sınırları zorlamaya devam ediyor.Çok ta merak ediyorum bir sonraki çalışmamım ne olacağını.Dün gece geç saatlerde bir müşterime ilham geldi ve bir kampanya düzenlemesi gerekiyordu.Kampanyanın sitede aktif ve sorunsuz çalışabiliyor olması için belirlemiş olduğu kategoriden herhangi bir ürün sepete eklenmiş ise başka bir kategoriden sepete ürün eklemek mümkün olmayacaktır ve müşteriye uyarı gidecekti.

Bu mümkündür sepette sadece özel kategoriden ürün varsa sadece özel kategorinin siparişi yapılacaktı farklı bir kategori sepete eklenmez.Her zaman için işlerimi kodlar ile çözmeye çalışıyorum ilk olarak böyle bir istek alınca da yine kodlar yardımı ile bu isteği de yerine getirmiş oldum.Kodları aşağıya bırakıyorum belki birinin aklına daha böyle bir kampanya gelir ve ihtiyaçı olur ya da benim daha sonra yine işime lazım eder ve kullanırım.

Kodun kullanımı her zaman ki gibidir.Tema dosyalarınız içerisinde functions.php dosyasına kodları eklemeniz yeterli olacaktır.Özel kategori yazan yere kendi özel kategorinizi tanımlayın.Kodlar içerisinde uyarılar vardır.Biz bunları kendi projemize göre uyarladık sizde kendi projenize göre uyarıları düzenleyip kullanabilirsiniz.


add_action( 'woocommerce_check_cart_items', 'checking_cart_items' );

function checking_cart_items() {

// Set your product category slug

$category = 'ozel-kategori';

$number_of_items = sizeof( WC()->cart->get_cart() );

$found = false; // Initializing

$notice = ''; // Initializing

if ( $number_of_items > 0 ) {

// Loop through cart items

foreach ( WC()->cart->get_cart() as $cart_item ) {

$product = $cart_item['data'];

$product_id = $cart_item['product_id'];

// Detecting if the defined category is in cart

if ( has_term( $category, 'product_cat', $product_id ) ) {

$found = true;

break; // Stop the loop

}

}

// Re-loop through cart items

foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {

$product = $cart_item['data'];

$product_id = $cart_item['product_id'];

if ( $found ) // If the defined product category is in cart

{

if ( $number_of_items == 1 ) { // only one defined product category

if ( empty( $notice ) ){

$notice = '1';

}

}

if ( $number_of_items >= 2 ) { // The defined product category + other categories in cart

// removing other categories items from cart

if ( ! has_term( $category, 'product_cat', $product_id ) ) {

WC()->cart->remove_cart_item( $cart_item_key ); // removing item from cart

if ( empty( $notice ) || $notice == '1' ){

$notice = '2';

}

}

}

} else { // Only other categories items

if ( empty( $notice ) ){

$notice = '3';

}

}

}

// Firing woocommerce notices

if ( $notice == '1' ) { // message for an 'cat_x' item only (alone)

wc_add_notice( sprintf( '<p class="woocommerce-error">Özel kategoriden sipariş verdiniz.Kargonuz sadece <b>Bursa Nilüfer ve Osmangazi</b> ilçelerine gönderilmektedir.Ürünleriniz moto-kurye ile hemen yola çıkmaktadır.</p>' ), 'success' );

} elseif ( $notice == '2' ) { // message for an 'cat_x' item and other ones => removed other ones

wc_add_notice( sprintf( '<p class="woocommerce-error">Sepetinizde özel kategoriden ürünler bulunduğu için farklı kategoriden olan ürünler çıkartılmıştır.Çünkü özel kategorideki ürünler moto-kurye ile sadece <b>Bursa Osmangazi ve Nülüfer</b> böglerine gönderilmektedir.Farklı kategoriden ürünlerinizi farklı bir sipariş olarak veriniz..</p>' ), 'error' );

} elseif ( $notice == '3' ) { // message for other categories items (if needed)

wc_add_notice( sprintf( '75 TL ve üzeri siparişlerinizde kargo ücretsiz olacaktır.' ), 'success' );

}

}

}

Cevap bırakın

E-posta hesabınız yayımlanmayacak.

İnternet sitemizden en verimli şekilde faydalanabilmeniz ve kullanıcı deneyiminizi geliştirebilmek için Cookie kullanıyoruz. Cookie kullanılmasını tercih etmezseniz tarayıcınızın ayarlarından Cookieleri silebilir ya da engelleyebilirsiniz. Kabul Ediyorum Devamını oku

Gizlilik ve Çerez Politikası