안녕하세요. 린치핀소프트 한광희입니다.

 

이 포스트는 woocommerce 배송 클래스 설정하기의 두 번째 포스트입니다.

지난 포스트 Woocommerce 배송 클래스(Shipping class) 지정하기#1 에서는 배송클래스의 등록과 가격지정에 대해서 소개하였습니다. 계속 이어서 주문 금액이 얼마 이상일 때는 “무료 배송”으로 지정되도록 하는 방법을 소개합니다.

 

woo_ship

 

 

 

1.무료 배송 설정하기

screenshot-52.68.215.28 2016-02-26 22-37-00

우커머스 -> 설정 -> 배송 -> 무료배송 탭으로 이동합니다.

“무료 배송 활성화”를 체크하여 무료배송이 활성화되도록 합니다 . 이후에는 다시 Shipping Options 탭으로 이동하여 “무료 배송”과 이외에 자신이 설정한 배송요금이 활성화 되어 있는지 확인합니다. ”

이 화면에서 중요한 것은 “무료 배송은 다음을 필요로 합니다…(Free Shipping Requires…) 이라는 부분에서 “최소 주문 금액”을 선택합니다.

아래 “최소 주문 금액”에 가격을 입력합니다. 여기서 입력한 가격이상의 “주문 금액의 합계”일 경우 해당 주문은 “무료 배송”으로 옵션이 추가됩니다.

 

 

 

2. 옵션 상품에 배송클래스를 각기 상이하게 추가합니다.

여기까지 설정하면 배송 클래스를 생성하고 클래스별로 가격을 추가하였으며 무료 배송요금까지 활성화를 마친 상태입니다. 이후에는 상품을 추가하여 배송클래스를 적용하고 확인해보아야 합니다.

여기서는 “옵션 상품”으로 예를 들겠습니다. 옵션 상품이란 하나의 상품에 여러가지 선택권이 있는 제품으로, 티셔츠의 겨우 색,사이즈를 선택할수 있게끔 구성되어야 하는 상품을 “옵션 상품”이라고 합니다.

여기서는 옵션상품을 추가하는 방법은 생략하고 추가된 옵션상품에 배송클래스를 지정하는 방법을 알려드립니다.

screenshot-52.68.215.28 2016-02-26 22-41-39

위의 화면은 “옵션 상품”에 배송 클래스를 추가하는 예시입니다. 각 상품별로 가격과 배송 클래스를 다르게 추가하였으며 상품별 “Shipping Class”의 셀렉트 박스(Select Box)를 클릭하면 자신이 추가한 배송클래스가 보여집니다.

 

screenshot-newtab 2016-02-26 22-45-52

상품의 추가를 완료하면 위처럼 “노랑” , “파랑” , “흰색”의 옵션을 선택할수 있는 상품이 생성되며 각 상품은 가격와 배송요금이 다르게 지정되어 있습니다.

 

screenshot-bpconcjcammlapcogcnnelfmaeghhagj 2016-02-26 22-50-34
screenshot-52.68.215.28 2016-02-26 22-51-14

screenshot-52.68.215.28 2016-02-26 22-50-10

 

 

 

이후에는 “무료 배송”의 적용에 대해서 알려드립니다.

“무료 배송”을 활성화 한후 주문의 요금이 100,000 원 이상이 되면 “무료 배송” 옵션이 활성화됩니다.( 100,000 원은 앞서 무료 배송을 설정할때 지정한 주문 최소 금액입니다)

screenshot-52.68.215.28 2016-02-26 22-53-01

주문 금액이 100,000원 이상이되면 위처럼 “무료 배송” 버튼이 활성화 됩니다. 여기서는 옵션 상품에 지정된 배송 클래스(고정요금 15,000원)과 상품이 무료 배송 최소주문금액 100,000원 이상이 되어 생성된 “무료 배송” 의 2가지 배송 요금이 활성화 됩니다.

 

보통 고객이라면 이 경우에는 고정 요금으로 돈을 지불하지 않고 “무료 배송”을 선택할 것입니다. 이런 상황에서는 오히려 “고정 요금”이 나타나는 것이 고객에게는 혼란을 줄 뿐입니다. 아쉽게도 이 부분을 설정하는 것은 우커머스 환경 설정에서 존재하지 않습니다. 다만 액션 훅(Action Hook)을 이용해 이런 경우에 고정 요금을 없앨수 없습니다.

 

 

 

/**
* woocommerce_package_rates is a 2.1+ hook
*/
add_filter( 'woocommerce_package_rates', 'hide_shipping_when_free_is_available', 10, 2 );

/**
* Hide shipping rates when free shipping is available
*
* @param array $rates Array of rates found for the package
* @param array $package The package array/object being shipped
* @return array of modified rates
*/
function hide_shipping_when_free_is_available( $rates, $package ) {

// Only modify rates if free_shipping is present
if ( isset( $rates['free_shipping'] ) ) {

// To unset a single rate/method, do the following. This example unsets flat_rate shipping
unset( $rates['flat_rate'] );

// To unset all methods except for free_shipping, do the following
$free_shipping = $rates['free_shipping'];
$rates = array();
$rates['free_shipping'] = $free_shipping;
}

return $rates;
}

이처럼 무료배송이 활성화 될 경우 기존의 고정요금인 배송 클래스를 없애는 방법으로 위의 소스코드를 이용하고 있는 테마의 functions.php에 삽입하세요.

위의 소스코드는 우커머스 플러그인에서 제공하는 액션 훅을 이용하여 무료 배송이 가능한 상황 일때 기존의 배송 클래스가 보여지지 않게 하는 액션 훅입니다.

 

 

관련 포스트. 훅(Hook) 이란?