September 10, 2015
Recently came across this request at work, and it seemed impossible to implement without a series of workarounds.If there is a way to set this up without using functions, I would love to know.
function df_add_ticket_surcharge( $cart_object ) { global $woocommerce; $specialfeecat = 86; // category id for the special fee $spfee = 0.00; // initialize special fee $spfeeperprod = 0.05; //special fee per product - PERCENTAGE foreach ( $cart_object->cart_contents as $key => $value ) { $proid = $value['product_id']; //get the product id from cart $quantiy = $value['quantity']; //get quantity from cart $itmprice = $value['data']->price; //get product price $terms = get_the_terms( $proid, 'product_cat' ); //get taxonomy of the products if ( $terms && ! is_wp_error( $terms ) ) : foreach ( $terms as $term ) { $catid = $term->term_id; if($specialfeecat == $catid ) { $spfee = $spfee + $itmprice * $quantiy * $spfeeperprod; } } endif; } if($spfee > 0 ) { $woocommerce->cart->add_fee( 'Ticket Concierge Charge', $spfee, true, 'standard' ); } } add_action( 'woocommerce_cart_calculate_fees', 'df_add_ticket_surcharge' );
Sourced here.