I want to achieve a global discount for all products but only for the 2nd product item.
What do I mean? If the customer buys "Jacket" no discount is given.
Customer buys two of the "Jacket" product. 20% discount is given on the second "Jacket".
Customer buys five of the "Jacket" product. Still only 20% discount on the 2nd "Jacket".
It should work for all both simple and variable products.
I managed to figure this much out and I'm asking for help with how to make the discount apply to only the 2nd item.
Here's the code:
add_filter('woocommerce_product_get_price', 'fifty_percent_on_second_product', 90, 2 );
add_filter('woocommerce_product_get_regular_price', 'fifty_percent_on_second_product', 90, 2 );
function fifty_percent_on_second_product( $price, $product ) {
if ( is_user_logged_in() ) {
I do not know what to do here
}
return $price;
}
Does anyone know how to make this work? If so, please help me.
You could use the Fee API to get a discount (20%) on the 2nd item only this way:
add_action( 'woocommerce_cart_calculate_fees', 'second_item_discount', 10, 1 );
function second_item_discount( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
$percentage = 20; // 20%
$discount = 0;
// Loop through cart items
foreach ( $cart->get_cart() as $cart_item ) {
// When quantity is more than 1
if( $cart_item['quantity'] > 1 ){
// 20% of the product price as a discount
$discount += wc_get_price_excluding_tax( $cart_item['data'] ) * $percentage / 100;
}
}
if( $discount > 0 )
$cart->add_fee( __( '2nd item discount', 'woocommerce' ) , -$discount );
}
Code goes in function.php file of your active child theme (or active theme). Tested and works.