Thay đổi số lượng khi đặt hàng với woocommerce

Cập nhật lần cuối 18/11/2017 by trong Woocommerce vào 18/12/2014 có 5155 Views

 

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

 

Để duy trì blog nên mình có làm aff cho 1 số bên hosting. Nhưng dù aff mình cũng chọn 1 số nhà cung cấp uy tín về chất lượng và support nên các bạn cứ yên tâm nhé.

Nếu có mua hosting mà có trong list dưới đây các bạn click vào link trước khi mua để ủng hộ mình nhé. Mình cảm ơn nhiều

 

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!

4.7/5 - (3 votes)
  • Bình luận
Sản phẩm nổi bật của Toản
x