is there a way to add a warning message to let user to confirm before user emptys the cart? I’m using this code for creating a button.
add_action( 'woocommerce_cart_coupon', 'custom_woocommerce_empty_cart_button' ); function custom_woocommerce_empty_cart_button() { echo '<a href="' . esc_url( add_query_arg( 'empty_cart', 'yes' ) ) . '" class="button" title="' . esc_attr( 'Svuota carrello', 'woocommerce' ) . '">' . esc_html( 'Svuota carrello', 'woocommerce' ) . '</a>'; } add_action( 'wp_loaded', 'atm_woocommerce_empty_cart_action', 20 ); function atm_woocommerce_empty_cart_action() { if ( isset( $_GET['empty_cart'] ) && 'yes' === esc_html( $_GET['empty_cart'] ) ) { WC()->cart->empty_cart(); $referer = wp_get_referer() ? esc_url( remove_query_arg( 'empty_cart' ) ) : wc_get_cart_url(); wp_safe_redirect( $referer ); } }
Advertisement
Answer
You can use the init
action hook to check URL query params and based on that empty cart.
Use the woocommerce_cart_coupon
hook to add an empty cart button beside apply coupon.
Add little JQuery code to show warning alerts to user confirm before empty the cart. check below code.
// check for empty-cart get param to clear the cart add_action( 'init', 'woocommerce_clear_cart_url' ); function woocommerce_clear_cart_url() { global $woocommerce; if ( isset( $_GET['empty-cart'] ) && $_GET['empty-cart'] == 'yes' ) { $woocommerce->cart->empty_cart(); } } add_action( 'woocommerce_cart_coupon', 'woocommerce_empty_cart_button' ); function woocommerce_empty_cart_button() { global $woocommerce; $cart_url = $woocommerce->cart->get_cart_url(); echo '<a href="'.$cart_url.'?empty-cart=yes" class="button empty_cart" title="' . esc_attr( 'Empty Cart', 'woocommerce' ) . '">' . esc_html( 'Empty Cart', 'woocommerce' ) . '</a>'; } function custom_scripts(){ ?> <script type="text/javascript"> (function($){ $(document).ready(function(){ $(document).on('click','.empty_cart',function(e){ e.preventDefault(); if(confirm('Are you sure want to empty cart?')){ var url = $(this).attr('href'); window.location = url; } }); }); })(jQuery); </script> <?php } add_action( 'wp_footer', 'custom_scripts', 10, 1 );
Tested and works.