I’m seeking assistance on how to modify the existing code to achieve the following:
Apply a 15% discount only for the first 3 instances of a specific product (ID: 848) for each logged-in user.
add_action('woocommerce_cart_calculate_fees', 'custom_discount_for_logged_in_users', 10, 1);
function custom_discount_for_logged_in_users($cart) {
$target_product_id = 848;
if (is_user_logged_in() && in_array($target_product_id, array_column($cart->get_cart(), 'product_id'))) {
$discount = $cart->subtotal * 0.15;
$cart->add_fee('15% Discount', -$discount, true);
}
}
2
Answers
This should work for your code. It’s untested, but I’ve added a
user_meta
to store the number of times a user received the discount. It then checks to make sure it can do the discount.The following code will register the count of purchased product ID 848 as user metadata. From there, it will be possible to make a discount only on First 3 purchases of the product ID 848.
Code goes in functions.php file of your child theme (or in a plugin). It should work.