Skip to content

Instantly share code, notes, and snippets.

@kartikparmar
Last active August 30, 2019 07:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kartikparmar/409969d947edb06a91387b6d840d7c01 to your computer and use it in GitHub Desktop.
Save kartikparmar/409969d947edb06a91387b6d840d7c01 to your computer and use it in GitHub Desktop.
Automatically adding multiple products to the cart based on the multiple categories.
<?php
/*
* Automatically adding multiple products to the cart based on the multiple categories.
*/
function aaptc_add_product_to_cart( $item_key, $product_id ) {
$product_category_id = array( 17, 18 ); // Category ids Hoodies & T-Shirts
$product_cats_ids = wc_get_product_term_ids( $product_id, 'product_cat' ); // Getting assigned categories of product which is being added to cart
$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 ) {
$free_product_ids = array( 122, 123 ); // Product Ids of the free products which will get added to cart e.g Gift A & Gift B
foreach ( $free_product_ids as $pkey => $free_product_id ) {
$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