GET a coupon code via URL and apply it in WooCommerce Checkout page [closed] GET a coupon code via URL and apply it in WooCommerce Checkout page [closed] wordpress wordpress

GET a coupon code via URL and apply it in WooCommerce Checkout page [closed]


Update 3: This can be done in a very simple way with the following 2 hooked functions:

  • The first one will catch the coupon code in the Url and will set it in WC_Sessions.
  • The second one will apply the coupon code from session in checkout page.

Here is this code:

add_action('init', 'get_custom_coupon_code_to_session');function get_custom_coupon_code_to_session(){    if( isset($_GET['coupon_code']) ){        // Ensure that customer session is started        if( isset(WC()->session) && ! WC()->session->has_session() )            WC()->session->set_customer_session_cookie(true);                    // Check and register coupon code in a custom session variable        $coupon_code = WC()->session->get('coupon_code');        if(empty($coupon_code)){            $coupon_code = esc_attr( $_GET['coupon_code'] );            WC()->session->set( 'coupon_code', $coupon_code ); // Set the coupon code in session        }    }}add_action( 'woocommerce_before_checkout_form', 'add_discout_to_checkout', 10, 0 );function add_discout_to_checkout( ) {    // Set coupon code    $coupon_code = WC()->session->get('coupon_code');    if ( ! empty( $coupon_code ) && ! WC()->cart->has_discount( $coupon_code ) ){        WC()->cart->add_discount( $coupon_code ); // apply the coupon discount        WC()->session->__unset('coupon_code'); // remove coupon code from session    }}

Code goes in function.php file of the active child theme (or active theme). Tested and works

Inspired from this answer code, Lukasz Wiktor has published a plugin: Woo Coupon URL