Home › Forums › Maximum Products per User for WooCommerce › How can I make a specific variation count as 4 instead of 1? › Reply To: How can I make a specific variation count as 4 instead of 1?
September 28, 2020 at 3:45 pm #100463
Hi again, Chris,
As promised, here is the snippet below. You need to change only one place there – where it says “TODO: you need to add your products with special quantities here”. Please give it a try and let me know if it’s working as expected:
add_filter( 'alg_wc_mppu_get_cart_item_quantities', 'my_alg_wc_mppu_get_cart_item_quantities', PHP_INT_MAX ); add_filter( 'alg_wc_mppu_validate_on_add_to_cart_quantity', 'my_alg_wc_mppu_validate_on_add_to_cart_quantity', PHP_INT_MAX, 2 ); add_filter( 'alg_wc_mppu_save_quantities_item_qty', 'my_alg_wc_mppu_save_quantities_item_qty', PHP_INT_MAX, 2 ); if ( ! function_exists( 'my_alg_wc_mppu_maybe_change_qty' ) ) { function my_alg_wc_mppu_maybe_change_qty( $product_id, $qty ) { // TODO: you need to add your products with special quantities here; in "product (or variation) ID => quantity multiplier" format. $products = array( 123 => 4, 125 => 4, ); return ( isset( $products[ $product_id ] ) ? $products[ $product_id ] * $qty : $qty ); } } if ( ! function_exists( 'my_alg_wc_mppu_save_quantities_item_qty' ) ) { function my_alg_wc_mppu_save_quantities_item_qty( $item_qty, $item ) { $product_id = ( ! empty( $item['variation_id'] ) ? $item['variation_id'] : $item['product_id'] ); return my_alg_wc_mppu_maybe_change_qty( $product_id, $item_qty ); } } if ( ! function_exists( 'my_alg_wc_mppu_validate_on_add_to_cart_quantity' ) ) { function my_alg_wc_mppu_validate_on_add_to_cart_quantity( $quantity, $product_id ) { return my_alg_wc_mppu_maybe_change_qty( $product_id, $quantity ); } } if ( ! function_exists( 'my_alg_wc_mppu_get_cart_item_quantities' ) ) { function my_alg_wc_mppu_get_cart_item_quantities( $cart_item_quantities ) { foreach ( $cart_item_quantities as $product_id => &$quantity ) { $quantity = my_alg_wc_mppu_maybe_change_qty( $product_id, $quantity ); } return $cart_item_quantities; } }