우커머스, 고객이 취소하거나 일정 시간 뒤 자동 취소될 수 있도록 해보자

우커머스 주문 취소 관련 기능 추가를 위한 글이다.

  • 특정 주문 상태인 경우 내 계정(My Account) 페이지의 주문 정보 리스트에 주문 취소 버튼 노출
  • 특정 주문 상태로 하루가 지나면 자동 주문 취소
  • 플러그인 소개 – 주문 취소 요청, 관리자 승인 및 취소 기능 강화

위 기능을 적용하기 위해서는 차일드 테마의 function.php에 코드를 추가해야 한다.
차일드 테마의 function.php 수정에 대해서는 아래 링크의 글을 참고하자.

특정 상태의 주문을 고객이 직접 취소할 수 있도록 변경해 보자.

결제대기중, 처리중, 보류중**,주문실패 주문을 고객이 직접 취소할 수 있도록 변경해보자.

Pending Payment, Processing, on-hold, Failed 주문 상태인 경우
내 계정(My Account) 페이지의 주문 정보 리스트에 주문 취소 버튼이 노출된다.

add_filter( 'woocommerce_valid_order_statuses_for_cancel', 'filter_valid_order_statuses_for_cancel', 20, 2 );
function filter_valid_order_statuses_for_cancel( $statuses, $order ){
    $custom_statuses = array( 'pending', 'processing', 'on-hold', 'failed' );
    return $custom_statuses;
}

보류중 주문만 고객이 직접 취소할 수 있도록 변경해보자.

on-hold 상태일 때 취소 버튼이 노출되는 방식으로 위 코드와 상당히 유사하다.
array 부분만 차이가 있다. 필요한 주문 상태만 추가하여 수정해도 된다.

add_filter( 'woocommerce_valid_order_statuses_for_cancel', 'filter_valid_order_statuses_for_cancel', 20, 2 );
function filter_valid_order_statuses_for_cancel( $statuses, $order ){
    $custom_statuses = array('on-hold');
    return $custom_statuses;
}

특정 주문이 24시간 뒤 자동 취소되도록 변경해 보자.

결제대기중, 처리중, 보류중, 주문실패 주문 24시간 뒤 자동 취소

Pending Payment, Processing, on-hold, Failed 주문이 완료됨으로 변경되지 않고 24시간 지속되면 자동 취소되는 코드이다.
해당 기능이 필요한 경우에만 해당 코드를 적용하도록 하자.
$custom_statuses = array( ‘pending’, ‘processing’, ‘on-hold’, ‘failed’ ); 부분을 수정하면 조건을 변경할 수 있다.

add_filter( 'woocommerce_valid_order_statuses_for_cancel', 'filter_valid_order_statuses_for_cancel', 20, 2 );
function filter_valid_order_statuses_for_cancel( $statuses, $order ){
    $custom_statuses = array( 'pending', 'processing', 'on-hold', 'failed' );
    $delay = 24*60*60;
    $date_created_time = strtotime($order->get_date_created());
    $date_modified_time = strtotime($order->get_date_modified());
    $now = strtotime("now");
    if ( ( $date_created_time + $delay ) >= $now ){
        return $custom_statuses;
    } else { 
        return $statuses;
    }
}

관련 플러그인도 있다 – WC Cancel Order

플러그인 페이지 – WC Cancel Order(무료, by WpExperts Hub)

내 계정(My Account) 페이지의 주문 정보 리스트에 주문 취소 요청 버튼을 추가된다. 바로 취소되는 방식이 아니라 취소 요청 방식이라서 관리자가 승인을 해주는 방식으로 기능이 상당히 많다.

기본적인 기능은

내 계정(My Account) 페이지 주문 취소 요청
→ 관리자가 주문 취소 요청을 승인 또는 거부할 수 있다.
→ 취소 승인이 되면 재고가 자동으로 복원된다.

WC Cancel Order 기본 기능 (무료)

  • 고객이 취소 세부 정보와 함께 관리자에게 주문 취소 요청을 보낼 수 있음
  • 관리자는 고객이 보낸 요청에 대한 이메일 알림을 받을 수 있음
  • 관리자는 우커머스 취소 구역에서 받은 취소 요청에 승인, 거절 가능
  • 취소 요청이 승인, 거부 시 고객에게 이메일 발송
  • 비회원 고객의 경우 주문 이메일에서 받은 고유 링크로 취소 요청을 관리자에게 송신 가능
  • 특정 주문 상태인 경우에만 취소 요청 허용 가능
  • 취소 사유 입력 필수 여부 선택 가능
  • 취소 요청 팝업에 고객 메모를 표시

WC Cancel Order 유료 버전도 있다. ($30)

무료 버전도 기능적으로 훌륭하지만 유료 버전의 경우 부가 기능이 추가된다.

  • 특정 주문 상태(예: 결제대기중)에 따라 ‘고객 직접 취소’ or ‘취소 요청’ 설정 가능
  • 취소 요청이 승인 시 특정 주문 상태로 자동 변경
  • 취소 요청 거절 시 특정 주문 상태로 자동 변경
  • 사용자 역할(Role)에 따른 취소 요청을 활성화
  • 관리자가 취소 사유 옵션을 정의하고 취소 요청 팝업에서 라디오 버튼으로 선택 가능
  • 취소 사유를 텍스트 입력하기
  • 라디오 버튼 선택 시 추가 텍스트 입력을 표시하거나 모든 옵션에 표시합니다.
  • 주문 후 일정 시간이 지나면 취소 요청 버튼을 숨기기
  • Ultimate Member – WooCommerce 플러그인을 지원
  • 우커머스 구독 플러그인 지원 (활성 구독에 대한 취소 요청 가능)

공유하기

답글 남기기