Black Friday & Cyber Monday SUPER SALE ALL WEEK:
Grab 40% OFF on plugins
Days
Hours
Minutes
Seconds

How to Apply Discounts on Specific Category Items Based on the Fixed Quantity of Product A in WooCommerce?

To boost your online store’s sales, it’s essential to implement various BOGO strategies and discounts. One effective approach is to offer discounts on specific categories of products when customers purchase a particular item. This strategy will boost the sales of discount offered items and also increases the overall shopping experience for customers.

Solution: Apply Discounts on Specific Category Items Based on the Fixed Quantity of Product A in WooCommerce

The code snippet allows you to offer a discount on all items in a specific category based on the quantity of a designated product (Product A) in the cart.


Let’s consider an example for an online electronics store selling the product Smartphone and the store also has a category called “Accessories” (Category ID: 16) that includes various items such as phone cases, screen protectors, and chargers. If the smartphone is bought exactly 4 in quantities then a 20% discount is applied to all line items of these categories present in the cart.

add_action('template_redirect', 'ts_add_product_to_cart');

function ts_add_product_to_cart() {
    if (!is_admin()) {
        global $woocommerce;

        $product_a_id = 100;
        $product_cat_id = 16;

        // Set the targeted quantity for the parent product
        $targeted_qty_a_id = 4; // Targeted quantity

        // Flag to check if the discount has been applied
        $discount_applied = false;

        // Loop through cart items
        foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
            // Check if the current product is the parent product
            if ($cart_item['product_id'] == $product_a_id) {
                // Check if the quantity of the parent product meets the condition
                if ($cart_item['quantity'] == $targeted_qty_a_id) {
                    // Loop through cart items and check if there are products from the specified category id
                    foreach (WC()->cart->get_cart() as $inner_cart_item_key => $inner_cart_item) {
                        // Check if the product is in the specified category
                        $product_cats_id_incart = wc_get_product_term_ids($inner_cart_item['data']->get_id(), 'product_cat');

                        if (!is_admin() && in_array($product_cat_id, $product_cats_id_incart)) {
                            // Apply a 20% discount for each item of category 'y' in the cart
                            $discount_percentage = 20;
                            $original_price = floatval($inner_cart_item['data']->get_price());
                            $discount_amount = $original_price * $discount_percentage / 100;
                            $new_price = $original_price - $discount_amount;

                            // Set the new discounted price
                            $inner_cart_item['data']->set_price($new_price);

                            // Set the flag to indicate that the discount has been applied
                            $discount_applied = true;
                        }
                    }
                }
            }
        }

        // If the discount is applied, you may need to update the cart totals
        if ($discount_applied) {
            WC()->cart->calculate_totals();
        }
    }
}
flexi bogo cta banner image


This to the shop owners who are running or planning to run BOGO offers on their WooCommerce store…

BOGO deals are great for increasing your sales, but have you thought about which offers are bringing you more revenue and which offers are not performing that great?

Don’t just set a BOGO deal, track the revenue generated by your deals in real-time with the Flexi BOGO for WooCommerce plugin.

Output

When the product smartphone is added to the cart and if the quantity of this specific product is selected in equal to the targeted quantity 4, then the code loops through the cart items and checks if there are products from the specified category ID: 16. If found any, then the 20% discount is applied to such items.
Before seeing the output let’s look into the original prices of the products belonging to the category ‘Electronic Accessories’ as this will help to compare the prices of the discounted amount later.

How to Apply Discounts on Specific Category Items Based on the Fixed Quantity of Product A in WooCommerce? - Tyche Softwares

Below is the output of the items that meets the criteria for the discount to be applied, since the quantity of Product A meets the condition of the targeted quantity of 4 and therefore the discount is applied to the items of category ‘Electronic Accessories’.

How to Apply Discounts on Specific Category Items Based on the Fixed Quantity of Product A in WooCommerce? - Tyche Softwares

If the quantity of product A is less than 4, then the discount will not be applied to the products assigned to the category ‘Electronic Accessories’.

How to Apply Discounts on Specific Category Items Based on the Fixed Quantity of Product A in WooCommerce? - Tyche Softwares

Alternatively, you can offer a free product from different categories. Check out this post that will help to set up a BOGO deal: buy one get one free from different categories in WooCommerce.

Browse more in: Code Snippets, WooCommerce How Tos, WooCommerce Tutorials

Share It:

Subscribe
Notify of
0 Comments
Newest
Oldest
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x