ПОЛУЧИТЕ код купона через URL и примените его на странице оформления заказа Woocommerce

У меня есть веб-сайт Woocommerce, и когда покупатель добавляет продукт в корзину, он перенаправляется на страницу оформления заказа, поэтому страница корзины недоступна.

Я хотел бы применить купон через URL (GET) на странице оформления заказа, например:
https://example.com/?coupon_code=highfive,
Когда пользователь нажимает этот URL, код купона сохраняется в сеансах браузера. Затем, если он добавляет в корзину какой-либо товар, то купон применяется на странице оформления заказа.

Это возможно?

Любая помощь будет оценена.

1 ответ

Решение

Обновление 2: это можно сделать очень простым способом с помощью следующих 2 подключенных функций:

  • Первый перехватит код купона в URL и установит его в WC_Sessions.
  • Второй будет применять код купона из сессии на странице оформления заказа.

Вот этот код:

add_action('wp_footer', 'get_custom_coupon_code_to_session');
function get_custom_coupon_code_to_session(){
    if( isset($_GET['coupon_code']) ){
        $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( ) {

    $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
    }
}

Код помещается в файл function.php активной дочерней темы (или активной темы).

Проверено и работает

Другие вопросы по тегам