특정 조건에서 WooCommerce 배송 방법을 숨기는 방법

게시 됨: 2020-06-15

배송 방법 은 고객이 상품을 구매할 때 결제 시 확인하는 서비스 및 요금 입니다. 원활한 배송 경험을 위해 전자 상거래 상점의 필수 옵션이 될 것입니다.

WooCommerce는 전자 상거래 솔루션으로 무료 배송 , 정액 요금지역 픽업 과 같은 배송 방법을 제공하여 위치에 따라 다양한 배송 지역을 설정할 수 있습니다. 예를 들어, 무료 배송 옵션은 매장 위치와 가까운 특정 범위의 우편 번호에 대해서만 사용할 수 있고 고정 요금 옵션은 배송 지역의 다른 부분에 사용할 수 있습니다.

Default Shipping Methods
기본 배송 방법

위치 기반 배송 옵션은 플러그인으로 쉽게 달성할 수 있지만 위치가 중요한 역할을 하지 않는 특정 조건의 경우 상점 소유자가 이를 달성하기가 매우 어려워집니다. 조건은 다음과 같을 수 있습니다.

  1. 무료 배송과 같은 특정 배송 방법은 주문 중량이 특정 파운드 또는 kg을 초과하는 경우 사용할 수 없습니다.
  2. 일부 배송 방법 사용 가능 여부는 전체 주문의 수량 또는 가격을 기반으로 합니다. 예를 들어 주문 총액이 $250 이상이면 무료 배송 방법만 사용할 수 있어야 하며 유료 배송 방법은 사용할 수 없어야 합니다.

결제 중에 배송 방법을 표시하거나 숨겨야 하는 조건이 더 있을 수 있지만 이 게시물에서는 위의 2에 대해 설명합니다. WooCommerce 스토어에서 이를 달성하려면 코드 스니펫 을 추가하거나 배송료 를 사용할 수 있습니다. 플러그인 을 사용할 수 있습니다.

코드 조각 사용

위에서 언급한 조건 1의 예를 들어 주문 중량이 5kg을 초과하는 경우 무료 배송을 사용할 수 없어야 합니다. 현재 활성화된 테마 의 functions.php 파일에 아래 코드를 추가하면 됩니다.

참고: 이러한 변경 사항은 현재 테마의 업데이트로 덮어쓸 수 있으므로 하위 테마를 만들고 필요한 코드 조각을 하위 테마의 functions.php 파일에 추가하는 것이 좋습니다. 또는 코드 조각 플러그인을 사용하여 사용자 정의 조각을 추가할 수 있습니다.

 /** 
 * 주문 중량이 10kg 이상일 경우 무료 배송을 숨깁니다. 
 * 
 * @param array $rates 패키지에 대해 발견된 요금의 배열. 
 * @return 배열 
 */ 
기능 ts_hide_free_shipping_for_order_weight( $rates, $package ) { 
    $order_weight = WC()->장바구니->get_cart_contents_weight(); 
 
    if ( $order_weight > 5 ) { 
        foreach( $rate_id => $rate_val 로서의 $rates ) { 
            if ( '무료 배송' === $rate_val->get_method_id() ) { 
                설정되지 않은( $rates[ $rate_id ] );
            } 
        } 
    } 
    반환 $rates; 
} 

add_filter( 'woocommerce_package_rates', 'ts_hide_free_shipping_for_order_weight', 100, 2 );

여기에서 woocommerce_package_rates 필터는 장바구니에서 계산된 요금을 수정하는 데 사용됩니다. 여기에는 제품이 장바구니에 추가되면 사용할 수 있는 모든 배송 요금이 포함됩니다. 따라서 주문 중량이 5kg을 초과하는 경우 이 필터에서 반환된 배열에서 무료 배송인 필수 배송 방법을 설정 해제 해야 합니다.

제품 페이지:

Product with 6kg weight
6kg 무게의 제품

배송 방법이 포함된 장바구니 페이지:

Free shipping is not available for the product with weight more than 5kg
5kg이상 상품은 무료배송 불가

WooCommerce 장바구니에 배송 방법을 숨기는 또 다른 예는 주문 총액이 $250 이상일 때 체크아웃 시 무료 배송만 허용하는 것입니다. functions.php 파일에 아래 코드를 추가하면 됩니다.

 /**
 * 주문 총액이 $250 이상인 경우 배송료를 숨깁니다.
 *
 * @param array $rates 패키지에 대해 발견된 요금의 배열.
 * @return 배열
 */
기능 ts_hide_shipping_for_order_total( $rates ) {
  $무료 = 배열();

  $order_total = WC()->장바구니->get_subtotal();
  
  if( $ order_total > 250 ) {
    foreach ( $rate_id => $rate 로서의 $rates ) {
      if ( '무료 배송' === $rate->get_method_id() ) {
        $free[ $rate_id ] = $rate;
      }
    }
  }
  반품 ! 비어있는( $free ) ? $free : $rates;
}
add_filter( 'woocommerce_package_rates', 'ts_hide_shipping_for_order_total', 100 );

여기에서 주문 총액이 $250 이상이면 무료 배송 방법만 있는 배열이 필터에서 반환되고 그렇지 않으면 모든 배송 요금이 반환됩니다.

Hide Shipping Rate when Order total is more than $250
총 주문 금액이 $250 이상인 경우 배송료 숨기기

위의 예에서는 무료 배송 방법을 참조했으므로 사용된 방법 id는 free_shipping입니다. 다른 배송 방법을 변경하는 경우 방법 ID는 다음과 같습니다.

현지 픽업: local_pickup
고정 요금: flat_rate

get_method_id() 함수는 단일 배송 지역의 개별 방법이 아닌 모든 배송 지역에 대한 3가지 방법에 대해서만 방법 ID를 가져오므로 결제 시 사용할 수 있는 모든 고정 요금, 현지 픽업 또는 무료 배송 방법을 숨깁니다. 그러나 특정 배송 방법을 숨기려면 배송 방법 ID와 인스턴스 ID의 조합을 사용해야 합니다.

예를 들어 'flat_rate:3'입니다. 여기서 3은 데이터베이스의 영역에 대한 각 배송 방법에 대해 저장된 고유한 인스턴스 ID입니다. 배송 방법을 마우스 오른쪽 버튼으로 클릭하고 브라우저의 개발자 도구에서 요소를 검사하여 배송 방법의 인스턴스 ID를 찾을 수 있습니다.

Instance ID

배송 방법에 다른 WooCommerce 확장 사용

다양한 조건에 대한 배송 방법을 설정하는 데 사용할 수 있는 여러 유료 또는 무료 확장이 있습니다. 가장 많이 사용되는 플러그인은 다음과 같습니다.

유료 플러그인:

  1. WooCommerce의 Table Rate Shipping : 이 플러그인은 WooCommerce의 기본 배송 옵션을 확장하여 고도로 맞춤화 가능한 배송 옵션을 제공합니다.
  2. WooCommerce용 고급 정액 배송 플러그인 : 이 플러그인은 고급 배송 규칙에 따라 상점의 배송료를 구성하는 데 도움이 됩니다.
  3. Jeroen sormani의 WooCommerce Advance Shipping 플러그인 : 이 플러그인을 사용하면 설정된 규칙에 따라 결제하는 동안 배송 방법을 활성화할 수 있습니다. 다양한 장바구니 세부정보, 제품 세부정보 또는 다양한 사용자 세부정보 에 대해 규칙을 설정할 수 있습니다 .
  4. WP Desk의 WooCommerce용 Flexible Shipping Pro : 이 플러그인을 사용하면 특정 품목, 장바구니 품목, 가격 또는 중량 규칙을 기반으로 배송 방법을 활성화할 수 있습니다.

무료 플러그인:

위의 플러그인 중 일부에는 기능이 제한된 무료 버전도 있습니다. 그들은:

  1. Jeroen Sormani의 WooCommerce Advanced 무료 배송: WooCommerce Advanced Shipping 플러그인의 무료 버전입니다. 두 플러그인의 유일한 차이점은 이 플러그인은 설정된 규칙에 대해 무료 배송 방법만 허용하고 유료 플러그인은 모든 배송 방법을 허용한다는 것입니다.
  2. WP Desk의 WooCommerce용 Flexible Shipping : 이것은 WooCommerce 플러그인용 Flexible Shipping Pro의 무료 버전 입니다. 가격과 무게에 대해서만 배송 방법을 설정할 수 있습니다.

위에서 언급한 플러그인에 대한 자세한 설명은 이 게시물을 확인하세요.

결론

이 게시물에서 보았듯이 사전 배송 옵션은 웹사이트에 코드 스니펫을 추가하거나 사용 가능한 다양한 플러그인을 사용하여 얻을 수 있습니다. 따라서 주어진 코드 스니펫을 시도하거나 플러그인으로 실험하고 이것이 WooCommerce Store에 유익한지 알려주십시오.