WooCommerce'daki ön sipariş ürünlerine kupon indirimi uygulamayın
Sadece stokta bulunan ürünlere kupon uygulamaya çalışıyorum.
Yani, sepette 5 ürün ve stokta 4 ürün varsa, sadece 4 ürüne indirim uygulanacak , ön siparişteki ürünler OLMAYACAKTIR.
Aslında get_items_to_apply_coupon
" class-wc-discounts.php
" dosyasındaki varsayılan " " işlevi değiştirmeye çalışıyorum .
Foreach cicle içerisindeki mevcut ürünün stok miktarını hesaplamayı denedim ve ardından $item_to_apply->quantity
stok ve sepet ürünleri arasındaki farkı değiştirdim .
Ayrıca $ -> miktarına "200" koyarsam indirim değişmez .
protected function get_items_to_apply_coupon( $coupon ) { $items_to_apply = array();
foreach ( $this->get_items_to_validate() as $item ) {
$item_to_apply = clone $item; // Clone the item so changes to this item do not affect the originals.
if ( 0 === $this->get_discounted_price_in_cents( $item_to_apply ) || 0 >= $item_to_apply->quantity ) { continue; } if ( ! $coupon->is_valid_for_product( $item_to_apply->product, $item_to_apply->object ) && ! $coupon->is_valid_for_cart() ) { continue; } $items_to_apply[] = $item_to_apply; } return $items_to_apply;
}
Yanıtlar
1 7uc1f3r
class-wc-discounts.phpiçeren
- apply_coupon_percent - Ürünlere yüzde indirimi uygulayın ve verilen bir dizi indirimi iade edin.
Bu fonksiyonda woocommerce_coupon_get_discount_amountfiltre kancasını buluyoruz .
Yani bir ürün ön siparişte olduğunda, indirim olarak 0 iade edebilirsiniz
function filter_woocommerce_coupon_get_discount_amount( $discount, $price_to_discount , $cart_item, $single, $coupon ) { // On backorder if ( $cart_item['data']->is_on_backorder() ) {
$discount = 0; } return $discount;
}
add_filter( 'woocommerce_coupon_get_discount_amount', 'filter_woocommerce_coupon_get_discount_amount', 10, 5 );
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'