อย่าใช้ส่วนลดคูปองกับสินค้าที่สั่งซื้อใน WooCommerce
ฉันพยายามใช้คูปองกับสินค้าที่มีอยู่ในสต็อกเท่านั้น
ดังนั้นหากฉันมีสินค้า 5 ชิ้นในรถเข็นและ 4 รายการในสต็อกมีเพียง 4 รายการเท่านั้นที่จะได้รับส่วนลดสินค้าที่สั่งซื้อในภายหลังจะไม่
อันที่จริงฉันกำลังพยายามเปลี่ยนget_items_to_apply_coupon
ฟังก์ชัน " " เริ่มต้นในclass-wc-discounts.php
ไฟล์ ""
ฉันได้ลองคำนวณปริมาณสต็อกของผลิตภัณฑ์ปัจจุบันภายใน foreach cicle แล้วฉันได้เปลี่ยน$item_to_apply->quantity
ความแตกต่างระหว่างสินค้าในสต็อกและสินค้าในตะกร้า
แต่ถ้าฉันยังใส่ "200" ใน $ -> ปริมาณส่วนลดจะไม่เปลี่ยนแปลง
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;
}
คำตอบ
1 7uc1f3r
class-wc-discounts.phpมี
- apply_coupon_percent - ใช้ส่วนลดเปอร์เซ็นต์กับสินค้าและส่งคืนชุดส่วนลดที่ได้รับ
ในฟังก์ชั่นนี้เราจะพบwoocommerce_coupon_get_discount_amountตะขอตัวกรอง
ดังนั้นเมื่อสินค้าอยู่ในการสั่งซื้อล่วงหน้าคุณสามารถคืน 0 เป็นส่วนลดได้
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 );