add_action( 'woocommerce_cart_calculate_fees', function() {
// Skip Admin Non AJAX
if( is_admin() && ! defined( 'DOING_AJAX' ) ) {
return;
}
// Get Coupon Code From Query
$coupon_code = isset( $_GET['coupon_code'] )
? sanitize_text_field( $_GET['coupon_code'] ) : '';
// Require Coupon Code And Cart Session
if( ! $coupon_code || empty( WC()->session ) ) {
return;
}
// Maybe Boot Cart Session
if( ! WC()->session->has_session() ) {
WC()->session->set_customer_session_cookie( true );
}
// Apply Coupon Unless Preexists
if( ! WC()->cart->has_discount( $coupon_code ) ) {
WC()->cart->add_discount( $coupon_code );
}
} );
Replace coupon form with URL argument
Listens to cart page URL argument for `coupon_code`.
Consider the Replace coupon form with a pop-up link code snippet in conjunction with this one. Also could be combined with code to remove the coupon form in cart and/or remove the coupon banner in checkout.
If you’re looking for advanced functionality related to this code, check out the official extension WooCommerce URL Coupons.
How to use
- Log into a staging, development, or locally hosted clone of your site
- Install and activate Code Snippets
- WP Admin > Snippets > Add New
- Copy and paste the code from the Description tab above
- Check to ensure formatting came over properly and no syntax errors show up in the editor
- Customize the code as desired
- Add a meaningful title
- Select whether to run on front-end or back-end (or both)
- Click “Save and Activate”
- Test your site to ensure it works
- Disable if any problems, or recover
- Repeat for live environment
License
All code snippets are licensed GPLv2 (or later) matching WordPress licensing.
Disclaimer of warranty:
Except when otherwise stated in writing the copyright holders and/or other parties provide the program as-is without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose.
Support
- Describe the issue and what you’ve observed.
- Describe your expected outcome(s).
- List steps to reproduce the issue.
- Optionally provide screen-shot or video URLs.
- Email to [email protected]
