programing

URL을 통해 쿠폰 코드를 입수하여 WooCommerce Checkout 페이지에서 적용

newnotes 2023. 4. 5. 22:13
반응형

URL을 통해 쿠폰 코드를 입수하여 WooCommerce Checkout 페이지에서 적용

저는 WooCommerce 웹사이트를 가지고 있으며, 고객이 카트에 제품을 추가하면 체크아웃 페이지로 리다이렉트되므로 카트 페이지에 접속할 수 없습니다.

쿠폰을 URL로 신청하고 싶습니다.GET체크 아웃 페이지)에, 다음과 같은 기능이 있습니다.https://example.com/?coupon_code=highfive.

고객이 이 URL을 클릭하면 쿠폰 코드가 브라우저 세션에 저장됩니다.카트에 상품을 추가하면 쿠폰이 체크아웃 페이지에 적용됩니다.

이게 가능합니까?

업데이트 3: 이 작업은 다음 2개의 후크 기능을 사용하여 매우 간단한 방법으로 수행할 수 있습니다.

  • 첫 번째는 URL에서 쿠폰 코드를 잡아 WC_Sessions에서 설정합니다.
  • 두 번째는 체크아웃 페이지에서 세션의 쿠폰 코드를 적용합니다.

다음은 코드입니다.

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

코드가 기능합니다.php 파일(또는 활성 테마)입니다(또는 활성 테마)을 입력합니다.테스트 완료 및 동작

이 답변 코드에서 영감을 얻어 Lukasz Wiktor는 플러그인을 공개했습니다.우쿠폰 URL

언급URL : https://stackoverflow.com/questions/48220205/get-a-coupon-code-via-url-and-apply-it-in-woocommerce-checkout-page

반응형