Skip to content

Instantly share code, notes, and snippets.

@kartikparmar
Created November 27, 2019 05:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save kartikparmar/ac413e109c72e07920054b63729a79c3 to your computer and use it in GitHub Desktop.
Save kartikparmar/ac413e109c72e07920054b63729a79c3 to your computer and use it in GitHub Desktop.
Adding free product to cart when a product is added to cart has category A or B or C
<?php
/**
* Automatically adding the product to the cart.
*/
function aaptc_add_product_to_cart( $item_key, $product_id ) {
$product_category_id = array( 16, 17, 18 ); // Category ids of A, B and C
$product_cats_ids = wc_get_product_term_ids( $product_id, 'product_cat' );
$product_category_id_check = false;
foreach ( $product_category_id as $key => $value ) {
if ( in_array( $value, $product_cats_ids ) ) { // Checking if the specified category is being matched or not.
$product_category_id_check = true;
}
}
if ( ! is_admin() && $product_category_id_check ) { // if front end and product is added to cart having category A or B or C.
$free_product_id = 12989; // Product Id of the free product which will get added to cart
$found = false;
//check if product already in cart
if ( sizeof( WC()->cart->get_cart() ) > 0 ) {
foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
$_product = $values['data'];
if ( $_product->get_id() == $free_product_id )
$found = true;
}
// if product not found, add it
if ( ! $found )
WC()->cart->add_to_cart( $free_product_id );
} else {
// if no products in cart, add it
WC()->cart->add_to_cart( $free_product_id );
}
}
}
add_action( 'woocommerce_add_to_cart', 'aaptc_add_product_to_cart', 10, 2 );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment