Coupons and Discounts
Filters available for WPPizza Coupons and Discounts
wppizza_cad_filter_discounts
Allow to filter (unset) applied discounts – identified by their ID – depending on custom conditions related to cart contents. As with all customisations, use at your own risk. You should test this thoroughly
/* @since 2.1.4 @param array @param array @return array EXAMPLE: Remove a specific applied simple discount - identified by its id - if cart contains an item from a certain category */ add_filter('wppizza_cad_filter_discounts', 'myprefix_filter_wppizza_cad_filter_discounts', 10, 2); function myprefix_filter_wppizza_cad_filter_discounts($array_of_discount_ids, $cart){ /* skip if there isn't anything in the cart to start off with */ if(empty($cart)){ return $array_of_discount_ids; } /* discount id to remove if cat id in cart */ $discountIdToRemove = 1; //skip if it does not exist in array anyway if(empty($array_of_discount_ids[$discountId])){ return $array_of_discount_ids; } /* check for category id used by an item in cart */ $findCatId = 6; /* array keys of items consist of blogid.categoryid.postid.sizes and more Note: there are also many other ways of doing this by iterating through all items or similar.... whatever works for you */ //get all keys cart $cart_item_keys = array_keys($cart); //iterate through keys to get category id's foreach($cart_item_keys as $cart_item_key){ //explode keys by '.' $x = explode('.',$cart_item_key); /* Example: if one of the items in the cart belongs to cat id = 6 , remove discount with id 1 $x[0] => blog id $x[1] => cat id $x[2] => post id $x[3] => sizes id $x[4] => size id ..... */ if($x[1] == $findCatId){ unset($array_of_discount_ids[$discountIdToRemove]); break;//no need to continue iteration now } } return $array_of_discount_ids; }