우커머스 가상 상품 결제 시 주소 필드 숨기는 방법

최근 세미나 등록 시 우커머스에서 결제하도록 만드는 워드프레스 쇼핑몰을 만드는 작업을 하였습니다. Ultimate Member 플러그인으로 회원가입 양식을 만든 다음, 세미나 참여를 원하는 사용자들이 세미나 등록 상품을 장바구니에 담으면 로그인 페이지로 이동하도록 하고 로그인/회원가입 후에 결제 페이지가 표시되도록 했습니다. 가상 상품이므로 결제 페이지에서는 주소 필드가 표시되지 않도록 설정했습니다. 워드프레스에서는 간단한 코드로 우커머스 가상 상품 결제 시 주소 필드를 숨길 수 있습니다.

우커머스 가상 상품 설정

우커머스 상품 구성 시 무형의 상품에 대하여 가상 상품(Virtual Product)로 설정할 수 있습니다.

우커머스 가상 상품 설정

상품 편집 페이지에서 상품 데이터 옆의 가상 필드를 체크하면 가상 상품이 됩니다. 위의 그림에서와 같이 가상 상품은 무형의 상품이므로 배송이 불가능하게 됩니다.

Virtual – one that doesn’t require shipping. For example, a service. Enabling this, disables all shipping related fields such as shipping dimensions. A virtual product will also not trigger the shipping calculator in cart and checkout.

가상 필드를 활성화하면 모든 배송 관련 필드는 비활성화되고 장바구니와 결제 페이지에서 배송료가 계산되지 않습니다.

가상 상품의 종류

서비스와 같이 배송이 필요하지 않은 상품을 가상 상품으로 지정할 수 있습니다.

  • 전자책 (가이드, 하우투 문서, 레시피)
  • 동영상 (온라인 강의 또는 교육 프로그램)
  • 소프트웨어 (예: 웹 어플, 플러그인, 프리셋, 툴 등)
  • 뮤직 및 오디오 파일 (예: 노래, 사운드 클립, 팝캐스트, 오디오북)
  • 그래픽 (예: 아이콘 팩, 폰트 팩, PSD 파일, 테마 및 템플릿)
  • 사진
  • 문서 (예: 인쇄물, 가이드, 리포트, 백서, 템플릿, 체크리스트 등)
  • 멤버십 (회원제 워드프레스 사이트를 운영하는 경우 멤버십 상품을 판매할 수 있습니다. 멤버십 상품 판매에 대해서는 "워드프레스에서 멤버십을 정기 결제 방식으로 판매하는 방법"을 참고해보세요.)

우커머스 가상 상품 결제 시 주소 필드 숨기기

가상 상품은 배송이 이루어지지 않으므로 청구 주소를 지정하지 않도록 하는 것도 일리가 있는 것 같습니다.

가상 상품 결제 시 주소 필드를 제거하려면 다음과 같은 코드를 추가하면 됩니다.

// 가상 상품에 대하여 주소 필드를 제거하여 결제 페이지를 단순화하기
// Simplify Checkout page by hiding address fields only for Virtual Products in WooCommerce
 
add_filter( 'woocommerce_checkout_fields' , 'bbloomer_simplify_checkout_virtual' );
 
function bbloomer_simplify_checkout_virtual( $fields ) {
    
   $only_virtual = true;
    
   foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
      // Check if there are non-virtual products
      if ( ! $cart_item['data']->is_virtual() ) $only_virtual = false;   
   }
     
    if( $only_virtual ) {
       unset($fields['billing']['billing_company']);
       unset($fields['billing']['billing_address_1']);
       unset($fields['billing']['billing_address_2']);
       unset($fields['billing']['billing_city']);
       unset($fields['billing']['billing_postcode']);
       unset($fields['billing']['billing_country']);
       unset($fields['billing']['billing_state']);
       unset($fields['billing']['billing_phone']);
       add_filter( 'woocommerce_enable_order_notes_field', '__return_false' );
     }
     
     return $fields;
}

// 출처: https://www.businessbloomer.com/woocommerce-hide-checkout-billing-fields-if-virtual-product-cart/

그러면 다음 그림과 같이 주소 관련 필드가 체크아웃 페이지에서 제거됩니다.

우커머스 가상 상품 결제 시 주소 필드 숨기는 방법

워드프레스 베스트셀링 테마인 아바다(Avada)에서 테스트해보니 예상대로 잘 작동했습니다. 다른 테마에서도 문제 없이 작동할 것으로 보입니다. 혹시 우커머스가 업데이트되면서 위의 코드가 작동하지 않을 경우 댓글을 통해 알려주시면 코드를 수정할 수 있는 경우 수정하도록 하겠습니다.

상기 코드는 테마의 함수 파일에 추가하도록 합니다. 마찬가지로 차일드 테마(하위 테마, 자식 테마)를 만들어서 작업해야 테마가 업데이트되어도 수정 사항이 사라지지 않습니다.

참고

일부 글에 제휴 링크가 포함될 수 있으며 파트너스 활동으로 일정액의 수수료를 받을 수 있습니다.

댓글 남기기

* 이메일 주소는 공개되지 않습니다.