WordpressWoocommerce

[Woocommerce] Cách thêm mức giảm tối đa cho mã giảm giá trong Woocommerce

Ví dụ đơn giản bạn muốn tạo mã giảm giá 20% tối đa 50k cho khách hàng thì làm thế nào? vấn đề này Woo không có sẵn mà bạn cần thêm 1 đoạn code nhỏ bên dưới vào wp-content/themes/{your-theme}/functions.php là được nhé

/*
* Cách thêm mức giảm tối đa cho mã giảm giá trong Woocommerce
* Maximum discount with coupon code in Woocommerce
*/
add_action( 'woocommerce_coupon_options', 'devvn_max_discount_woocommerce_coupon_options', 10, 2 );
function devvn_max_discount_woocommerce_coupon_options( $coupon_id, $coupon ){
 
    // max discount per coupons
    $max_discount =  get_post_meta( $coupon_id, '_max_discount', true );
    woocommerce_wp_text_input( array(
        'id'                => 'max_discount',
        'label'             => __( 'Mức giảm tối đa', 'devvn' ),
        'placeholder'       => esc_attr__( 'Nhập số tiền giảm tối đa', 'devvn' ),
        'description'       => __( 'Mức giảm tối đa mà mã giảm giá này có thể giảm.', 'devvn' ),
        'type'              => 'number',
        'desc_tip'          => true,
        'class'             => 'short',
        'custom_attributes' => array(
            'step'  => 1,
            'min'   => 0,
        ),
        'value' => $max_discount ? $max_discount : '',
    ) );
 
}
add_action( 'woocommerce_coupon_options_save', 'devvn_max_discount_woocommerce_coupon_options_save', 10, 2 );
function devvn_max_discount_woocommerce_coupon_options_save( $coupon_id, $coupon ) {
    update_post_meta( $coupon_id, '_max_discount', wc_format_decimal( $_POST['max_discount'] ) );
}
 
add_filter( 'woocommerce_coupon_get_discount_amount', 'devvn_max_discount_woocommerce_coupon_get_discount_amount', 20, 5 );
function devvn_max_discount_woocommerce_coupon_get_discount_amount( $discount, $discounting_amount, $cart_item, $single, $coupon ) {
 
    $max_discount = get_post_meta( $coupon->get_id(), '_max_discount', true );
 
    if ( is_numeric($max_discount) && ! is_null( $cart_item ) && WC()->cart->subtotal_ex_tax ) {
 
        $cart_item_qty = is_null( $cart_item ) ? 1 : $cart_item['quantity'];
        if ( wc_prices_include_tax() ) {
            $discount_percent = ( wc_get_price_including_tax( $cart_item['data'] ) * $cart_item_qty ) / WC()->cart->subtotal;
        } else {
            $discount_percent = ( wc_get_price_excluding_tax( $cart_item['data'] ) * $cart_item_qty ) / WC()->cart->subtotal_ex_tax;
        }
        $_discount = ( $max_discount * $discount_percent );
 
        $discount = min( $_discount, $discount );
    }
 
    return $discount;
}

Sau khi add code xong trong mục thêm mã giảm giá > tab Chung sẽ có thêm mục “Mức giảm tối đa” bạn chỉ cần nhập số tiền tối đa có thể giảm vào đó là xong

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Back to top button