I am developing a food ordering WooCommerce store. I am trying to add an input field or a grouped button to let the customer add delivery tips to checkout total.
Backend Part: I wrote an action that add a tip to checkout based on the percentage given (let's say 10% of total order)
add_action( 'woocommerce_cart_calculate_fees', 'calculateTipsPercentage', 10, 1 ); function calculateTipsPercentage( $cart ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; $total_tax = 0; $carttotal= 0; // Get the unformated taxes array $taxes = $cart->get_taxes(); //get Tax amount from taxes array foreach($taxes as $tax) $total_tax += $tax; global $woocommerce; $percentage = 0.10;//percentage of tips (must be entered by customer) $carttotalamount = ( $woocommerce->cart->cart_contents_total + $woocommerce->cart->shipping_total ); //Cart total without tax $totalorderwithTax = ( $carttotalamount + $total_tax); //cart total with tax $extrafee= round( $totalorderwithTax * $percentage, 2 ); //extra fee amount $percetagetoShow = ( $percentage * 100 ); $woocommerce->cart->add_fee( "Tip ({$percetagetoShow}%)", $extrafee, true, '' ); }
My problem is with the Front-end part.
how can I add any kind of input field with a button (add tips to checkout) that let the customer add the percentage and click this button which will fire the action found above. or if I can do it through ajax/jquery without the button (without refreshing the page) which would be better.
any help would be appreciated.