Thay đổi số lượng sản phẩm khi đặt hàng với woocommerce

 

 

Mặc định của woocomerce sẽ là input number có giá trị min = 1. Bây giờ chúng ta sẽ thay đổi phần này nha.

Đổi thành Dropdown Thiết lập giá trị min, max và step

Thêm đoạn code sau vào file functions.php trong theme của bạn nha

function woocommerce_quantity_input( $args = array(), $product = null, $echo = true ) {
    if ( is_null( $product ) ) {
        $product = $GLOBALS['product'];
    }

    $defaults = array(
        'input_id'    => uniqid( 'quantity_' ),
        'input_name'  => 'quantity',
        'input_value' => '1',
        'max_value'   => apply_filters( 'woocommerce_quantity_input_max', -1, $product ),
        'min_value'   => apply_filters( 'woocommerce_quantity_input_min', 0, $product ),
        'step'        => apply_filters( 'woocommerce_quantity_input_step', 1, $product ),
        'pattern'     => apply_filters( 'woocommerce_quantity_input_pattern', has_filter( 'woocommerce_stock_amount', 'intval' ) ? '[0-9]*' : '' ),
        'inputmode'   => apply_filters( 'woocommerce_quantity_input_inputmode', has_filter( 'woocommerce_stock_amount', 'intval' ) ? 'numeric' : '' ),
        'style'       => apply_filters( 'woocommerce_quantity_style', 'float:left; margin-right:10px;', $product )
    );

    $args = apply_filters( 'woocommerce_quantity_input_args', wp_parse_args( $args, $defaults ), $product );

    // Apply sanity to min/max args - min cannot be lower than 0.
    $args['min_value'] = max( $args['min_value'], 0 );
    $args['max_value'] = 0 < $args['max_value'] ? $args['max_value'] : '';

    // Max cannot be lower than min if defined.
    if ( '' !== $args['max_value'] && $args['max_value'] < $args['min_value'] ) {
        $args['max_value'] = $args['min_value'];
    }

    if ( ! empty( $args['min_value'] ) )
        $min = $args['min_value'];
    else $min = 1;

    if ( ! empty( $args['max_value'] ) )
        $max = $args['max_value'];
    else $max = 30;

    if ( ! empty( $args['step'] ) )
        $step = $args['step'];
    else $step = 1;

    ob_start();

    $options = '';
    for ( $count = $min; $count <= $max; $count = $count + $step ) {
        $options .= '<option value="' . $count . '" '.selected($count, $args['input_value'], false).'>' . $count . '</option>';
    }
    echo '<div class="quantity_select" style="' . $args['style'] . '"><select name="' . esc_attr( $args['input_name'] ) . '" title="' . _x( 'Qty', 'Product quantity input tooltip', 'woocommerce' ) . '" class="qty">' . $options . '</select></div>';

    if ( $echo ) {
        echo ob_get_clean(); // WPCS: XSS ok.
    } else {
        return ob_get_clean();
    }
}

Chỉ thay đổi giá trị mặc định, min, max và step

khi muốn giữ nguyên là input rồi để khách tự chọn số lượng thì ta thêm đoạn code nay nha. Bạn cũng thêm đoạn code này vào file functions.php nhé

add_filter( 'woocommerce_quantity_input_args', 'custom_quantity', 10, 2 );
function custom_quantity( $args, $product ) {
 $args['input_value'] = 10; // Giá trị ban đầu
 //$args['max_value'] = 20; //Thêm vào nếu muốn số lượng tối đa có thể đặt hàng
 //$args['min_value'] = 1; // số lượng tối thiểu có thể đặt hàng
 //$args['step'] = 1; //Bước nhảy của mỗi lần ấn tăng/giảm
 return $args;
}

Chúc các bạn thành công!

Nguồn: levantoan.com