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

How to Set up a BOGO Deal: Buy one Get one Free from Different Categories in WooCommerce?

With this customization, you can easily setup WooCommerce BOGO deals across different categories. This approach involves a way to introduce cross-selling products and make customers to explore another category that might be less popular or need attention. For example, If customers buy a pair of shoes from the Sneakers category, they get a Baseball Cap for free from the Accessories category.

Solution: Set up a BOGO Deal: Buy one Get one Free from Different Categories in WooCommerce

The code automatically adds a free product from a specified category (with ID 16) to the cart when a product from the “Sports” category (with ID 60) is added to the cart.

function ts_add_product_cat( $cart_item_key, $product_id ) {
    $sports_category_id = 60; // Sports category ID
    $free_category_id = 16; // Category ID for free products

    $product_cats_ids = wc_get_product_term_ids( $product_id, 'product_cat' );

    if ( ! is_admin() && in_array( $sports_category_id, $product_cats_ids ) ) {
        // Get a free product from the specified category
        $free_product_id = ts_get_free_product_from_category( $free_category_id );

        // If the free product is available, add it to the cart
        if ( $free_product_id ) {
            WC()->cart->add_to_cart( $free_product_id );
        }
    }
}

add_action( 'woocommerce_add_to_cart', 'ts_add_product_cat', 10, 2 );

function ts_get_free_product_from_category( $category_id ) {
    // Implement this function to dynamically get a free product ID from the specified category
    $args = array(
        'post_type'      => 'product',
        'posts_per_page' => 1,
        'tax_query'      => array(
            array(
                'taxonomy' => 'product_cat',
                'field'    => 'id',
                'terms'    => $category_id,
            ),
        ),
    );

    $products_query = new WP_Query( $args );

    if ( $products_query->have_posts() ) {
        $products_query->the_post();
        $free_product_id = get_the_ID();
        wp_reset_postdata();
        return $free_product_id;
    }

    return null; // Return null if no free product is found
}

Output

When a customer adds a pair of sneakers to their cart, the ‘ts_get_free_product_from_category’ function takes a category ID as a parameter and queries the WordPress database to retrieve a single product ID from the specified category. If the product is found, as a bonus, a free product from the accessories category is also added to their cart.

How to Set up a BOGO Deal: Buy one Get one Free from Different Categories in WooCommerce? - Tyche Softwares


Just like the above customization, you can apply different BOGO strategies, such as offering “Buy 2 Get 50% Off” discounts on specific product categories. Whether you’re looking to boost sales in a particular category, or simply offer a compelling deal to attract more customers, our simple code snippets make customizing BOGO deals in WooCommerce easy and versatile.

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

Share It:

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