WooCommerce에서 주문 상태를 자동으로 변경하는 방법

게시 됨: 2021-07-31

스토어에서 주문 상태를 업데이트하시겠습니까? 당신은 바로 이곳에 왔습니다. 이 가이드에서는 일부 PHP 스크립트를 사용하여 WooCommerce에서 주문 상태를 자동으로 변경하는 방법을 보여줍니다. 고급 코딩 기술이 없어도 걱정하지 마세요. 각 스크립트에 대해 자세히 설명하겠습니다.

WooCommerce는 개발자에게 많은 기능을 제공하므로 코딩 기술이 있으면 모든 종류의 사용자 정의를 만들고 전자 상거래 상점을 개선할 수 있습니다. 다음 자습서에서는 주문 상태에 대해 알아야 할 모든 것을 배웁니다. 이것은 많은 주문을 관리할 때 매우 유용할 수 있는 WooCommerce 기능입니다. 상점 관리자가 특정 상태의 주문을 쉽게 검색하고 특정 작업을 수행할 수 있는 백엔드 주문 목록에서 특히 유용합니다.

더 이상 고민하지 않고 바로 들어가 보겠습니다.

WooCommerce의 주문 상태는 무엇입니까?

주문 상태는 주문에 현재 주문 상태를 나타내는 태그입니다 . 해당 게시물의 현재 상태에 대한 특정 정보를 설명하는 게시물에 첨부된 분류법과 유사합니다. 예를 들어, 고객이 "주문하기" 버튼을 누르면 저희 가게에서 주문을 합니다. 기본적으로 주문 상태는 "결제 보류"로 설정됩니다.

스토어가 PayPal 또는 Stripe와 같은 지불 게이트웨이와 통합된 경우 이전 기본 상태(보류 중)가 검증되고 지불 게이트웨이 검증 결과에 따라 " 보류 중 " 또는 " 실패 "로 변경됩니다. 그런 다음 결제가 완료되면 주문 상태가 자동으로 “ 처리 중”으로 변경되고, 결제가 실패하면 “ 실패 ” 상태가 됩니다.

보시다시피 이러한 각 상태는 주문에 대한 관련 정보를 제공합니다. 이 자동화를 통해 주문 결제가 완료되었는지 여부를 알려 제품을 고객에게 배송할 수 있습니다.

WooCommerce의 주문 상태

다음은 WooCommerce에서 사용할 수 있는 모든 주문 상태와 각 주문의 의미입니다.

  • 결제 보류: 주문이 접수되었으며 결제가 등록되지 않았습니다. 우리는 지불을 기다리고 있습니다
  • 실패: 어떤 이유로 결제에 실패했습니다. 이는 결제 플랫폼(예: PayPal)에서 거부되었거나 추가 인증(SCA)이 필요함을 의미합니다.
  • 처리: 상점에서 지불을 받았고 제품 재고가 업데이트되었으며 구매가 배송 예정입니다.
  • 완료됨: 주문이 이행 및 완료되었습니다. 모든 것이 잘 된 주문의 마지막 상태입니다.
  • 보류 중 : 고객이 결제를 완료하지 않았으므로 주문은 매장 관리자의 확인이 필요합니다.
  • 취소됨 : 상점 관리자 또는 사용자가 어느 시점에서 주문을 취소했습니다. 고객에게 연락하여 주문을 취소한 이유를 이해하는 것이 좋지만 추가 조치는 필요하지 않습니다.
  • 환불됨: 주문이 환불되었으며 추가 조치가 필요하지 않습니다.

이제 주문 상태와 기능을 더 잘 이해했으므로 업데이트하는 것이 좋은 이유를 살펴보겠습니다.

기본 주문 상태 기능을 변경하는 이유는 무엇입니까?

각 전자 상거래 상점은 다르며 특정 요구 사항이 있습니다. 일부 온라인 상점은 주문 상태를 전혀 사용하지 않거나 모두 사용하지 않을 수 있습니다. 예를 들어, 쇼핑객이 제품을 반품할 수 없는 경우 상점에서 환불 상태를 사용하지 않을 수 있습니다.

또한 기본 주문 상태 기능이 충분하지 않고 상점에 주문 상태 관리를 위한 사용자 지정 상태 또는 자동화된 솔루션이 필요한 경우가 있을 수 있습니다. 이러한 경우 주문 상태 동작을 사용자 지정하는 것은 매장 관리를 개선하는 훌륭한 솔루션입니다. 이렇게 하면 전자 상거래 상점에서 모든 경우에 주문 상태를 수동으로 업데이트할 필요가 없습니다.

이를 통해 상점 소유자는 시간을 절약하고 비즈니스를 개선하기 위해 더 중요한 일에 집중할 수 있습니다.

WooCommerce에서 주문 상태가 변경되는 방식

이 시점에서 WooCommerce가 PayPal, Payoneer, Stripe 등과 같은 결제 게이트웨이와 통합될 때 주문 상태가 동적으로 변경된다는 점을 이해하는 것이 중요합니다. 예상하지 못한 상태에서 수동으로 상태를 업데이트하면 상점에 표시된 결제 방법이 중단될 수 있으며 고객은 구매 프로세스를 따를 수 없습니다.

우리가 할 일을 더 잘 이해하기 위해 주문 상태 흐름이 어떻게 작동하는지 살펴보겠습니다.

우커머스 주문 상태

WooCommerce 문서에서

위의 그림에서 볼 수 있듯이 주문 상태의 첫 번째 단계는 " Pending "입니다. 그 직후, 결제 게이트웨이는 사용자가 결제를 완료할 수 있는지 확인하고 상태를 " 보류 중 "으로 변경한 다음 결제가 성공적으로 완료되면 " 처리 중"으로 변경합니다. 그렇지 않으면 " 실패 "로 바뀝니다.

그 후 WooCommerce는 다른 작업을 수행하지 않습니다. 상점 관리자는 주문을 " 완료 됨 " 또는 " 취소됨 " 으로 표시해야 합니다. 이 시점에서 결제 게이트웨이가 통합되어 있어도 주문 상태를 자동으로(프로그래밍 방식으로) 변경하는 것이 안전합니다 .

또한 상태가 " 처리 중" 또는 " 환불 됨"으로 변경되면 주문과 관련된 제품의 재고가 다시 계산된다는 점을 아는 것이 중요합니다. 해당 주문과 관련된 온라인 상점의 모든 통계에서도 마찬가지입니다.

주문 상태가 어떻게 변경되는지 확실히 알았으니 WooCommerce에서 주문 상태를 업데이트하는 방법을 살펴보겠습니다.

WooCommerce에서 주문 상태를 자동으로 변경하는 방법

WooCommerce에서 프로그래밍 방식으로 주문 상태를 변경하는 몇 가지 샘플 스크립트를 살펴보겠습니다.

참고 : 일부 핵심 파일을 편집할 것이므로 시작하기 전에 사이트의 전체 백업을 수행해야 합니다. 또한 하위 테마를 만들거나 아직 플러그인이 없는 경우 이러한 플러그인을 사용하여 테마를 업데이트한 후에도 사용자 정의를 유지할 수 있습니다.

구매 후 모든 주문 상태 변경

전자 상거래 상점이 주문 상태를 사용하는 결제 게이트웨이와 통합되지 않은 경우 고객이 주문한 후 "처리 중" 상태로 두는 대신 모든 주문을 보류할 수 있습니다. 이 스크립트를 살펴보겠습니다.

 기능 QuadLayers_change_order_status( $order_id ) {  
                if ( ! $order_id ) {반환;}            
                $order = wc_get_order( $order_id );
                if( '처리'== $order->get_status() ) {
                    $order->update_status( 'wc-on-hold' );
                }
}
add_action('woocommerce_thankyou','QuadLayers_change_order_status');

woocommerce_thankyou 후크를 사용하여 주문이 접수된 직후에 함수를 트리거하고 update_status() 를 사용하여 상태를 변경합니다.

보시다시피 상태 슬러그에는 접두사(WC)가 있습니다. 이 함수는 접두사 없이도 작동하지만 사용하는 것이 좋습니다.

woocommerce 주문 상태 보류

코드를 조정하여 "대기 중" 대신 다른 상태와 사용자 정의 상태를 사용할 수 있다는 점은 주목할 가치가 있습니다.

주문 ID에서 주문 상태 수정

다음 스크립트는 단일 주문의 상태를 변경합니다. 예를 들어 주문 115의 주문 상태를 변경하려면 다음 스니펫을 사용합니다.

 add_action('초기화',함수(){
	$order = 새로운 WC_Order(115);
        $order->update_status('wc-processing'); 
});

이것은 짧은 스크립트이므로 'init' WordPress 후크에서 익명 함수를 사용했습니다.

이렇게 하면 스크립트가 활성화되어 있는 동안 상태를 더 이상 변경할 수 없습니다.

재방문 고객을 위한 WooCommerce 주문 상태 업데이트

이것은 WooCommerce에서 자동으로 주문 상태를 변경하는 또 다른 흥미로운 예입니다. 아래 스크립트는 사용자에게 "Completed" 또는 "Processing" 상태로 첨부된 이전 주문이 있는 경우에만 주문 상태를 "Completed"로 변경합니다.

 기능 QuadLayers_order_status_returning( $order_id ) {
        // 이 고객 주문 받기
         $user_id = wp_get_current_user();
        $customer_orders = [];
        foreach ( wc_get_is_paid_statuses() as $paid_status ) {
            $customer_orders += wc_get_orders( [
                '유형' => 'shop_order',
                '제한' => - 1,
                'customer_id' => $user_id->ID,
                '상태' => $paid_status,
            ] );
        }
            # 이전 주문이 존재합니다
            if(count($customer_orders)>0){ 
                     if ( ! $order_id ) {반환;}            
                     $order = wc_get_order( $order_id );
                     if( '처리'== $order->get_status() ) {
                         $order->update_status( '화장실 완료' );
                     }
            }
}
add_action( 'woocommerce_thankyou', 'QuadLayers_order_status_returning' );

이는 보안 계층을 추가하고 재방문 고객의 쇼핑 경험을 개선하는 데 좋은 아이디어가 될 수 있습니다.

URL 매개변수의 주문 상태 변경

이 샘플 스크립트는 URL 매개변수가 브라우저에 있을 때 특정 주문 상태로 변경됩니다. init WordPress 후크를 사용하고 있으므로 스크립트는 스토어의 모든 페이지에서 작동합니다.

또한 현재 로그인한 사용자의 최근 주문에 대한 주문 상태를 편집합니다. 이 예에서 URL에 https://website.com/shop?st=revert 와 같은 "되돌리기" 매개변수가 있는 경우 주문 상태가 "취소됨"으로 변경됩니다.

 add_action('초기화',함수(){
    if(isset($_GET['st'])&&!empty($_GET['st']) ):
        $get_url = $_GET['st'];
 
        if($get_url=='되돌리기'):
            $user_id = wp_get_current_user();
            $order = wc_get_customer_last_order($user_id->ID);  
            $order->update_status( 'wc-cancelled' );
        엔디프;
    엔디프;
});

맞춤 주문 상태 만들기

이 예에서는 주문 상태를 변경하는 대신 자유롭게 사용할 수 있는 새 사용자 지정 주문 상태를 만듭니다. 이는 기존 상태가 충분하지 않거나 보다 명확하게 새 상태를 생성하려는 경우에 좋습니다. 사용자 지정 주문 상태를 만든 후에는 위의 스크립트와 함께 사용할 수 있습니다.

다음 스크립트는 주문 상태 목록에 새 상태를 등록하고 추가합니다. 이 경우 새로운 사용자 지정 주문 상태를 " 진행 중 "이라고 부르지만 코드를 사용자 지정하기만 하면 원하는 이름을 사용할 수 있습니다.

 // 새로운 상태 등록
함수 register_in_progress_order_status() {
    register_post_status( '진행 중인 화장실', 배열(
        'label' => '진행 중',
        '공개' => 참,
        'show_in_admin_status_list' => 참,
        'show_in_admin_all_list' => 참,
        'exclude_from_search' => 거짓,
        'label_count' => _n_noop( '진행 중 (%s) ', '진행 중 (%s) ' )
    ) );
}
// 주문 상태 목록에 사용자 정의 상태 추가
기능 add_in_progress_to_order_statuses( $order_statuses ) {
    $new_order_statuses = 배열();
    foreach ( $order_statuss as $key => $status ) {
        $new_order_status[ $key ] = $status;
        if ( 'wc-processing' === $key ) {
            $new_order_statuses['wc-in-progress'] = '진행 중';
        }
    }
    반환 $new_order_statuses;
}
add_action( '초기화', 'register_in_progress_order_status' );
add_filter( 'wc_order_statuses', 'add_in_progress_to_order_statuses' );



woocommerce-custom-order-status

WooCommerce 주문 상태를 변경하는 다른 방법

WooCommerce에서 기본 주문 상태를 업데이트하는 다른 방법을 찾고 있다면 몇 가지 플러그인을 확인할 수 있습니다. 불행히도 이를 위한 무료 도구는 많지 않지만 다음은 최고의 도구입니다.

  • YITH 맞춤 주문 상태 : 주문 상태를 관리하고 맞춤 주문을 생성하는 훌륭한 도구입니다. 시장에서 가장 좋은 도구 중 하나이지만 저렴하지는 않습니다. 연간 79.99€를 돌려드립니다.
  • WooCommerce 주문 상태 관리자 : 주문 상태를 추가, 제거 및 편집하는 또 다른 훌륭한 플러그인입니다. 주문 상태에 따라 이메일을 트리거할 수도 있습니다. 연간 비용은 49 USD입니다.
  • WooCommerce 사용자 지정 주문 상태 : WooCommerce 에서 주문 상태를 관리하는 최고의 도구 중 하나입니다. 연간 39달러부터 시작하는 프리미엄 플러그인입니다.
  • Ni WooCommerce Custom Order Status : 주문 상태를 쉽게 관리할 수 있는 몇 안 되는 안정적인 무료 플러그인 중 하나입니다.

WooCommerce 스토어에서 주문 상태를 확인하는 방법

스토어에서 주문 상태를 확인하는 가장 쉬운 방법은 WooCommerce 대시보드를 열고 주문으로 이동하는 것입니다. 그런 다음 주문을 열고 일반 섹션에서 상태 드롭다운을 누릅니다. 거기에서 상점의 모든 주문을 볼 수 있습니다.

결론

요약하면 주문 상태는 주문의 현재 상태를 나타내는 태그입니다. WooCommerce에는 특정 기본 상태가 포함되어 있지만 새 상태를 제거하거나 추가하려는 사람들에게는 이를 사용자 정의하는 것이 좋습니다. 또한 주문 상태 관리를 위한 자동화된 솔루션이 필요한 비즈니스에 흥미로운 솔루션이 될 수 있습니다.

이 가이드에서는 WooCommerce에서 자동으로 주문 상태를 변경하는 모든 기본 주문 상태와 다양한 예를 보았습니다. 이것은 몇 가지 아이디어일 뿐이지만 더 많은 것을 할 수 있습니다. 이 스크립트를 기본으로 사용하여 상점에 맞게 사용자 정의하는 것이 좋습니다.

상점을 사용자 정의하는 방법에 대한 자세한 내용은 다음 자습서를 참조하십시오.

  • WooCommerce 쿠폰을 자동으로 적용하는 방법
  • 프로그래밍 방식으로 WooCommerce 감사 페이지 편집
  • WooCommerce 등록 양식을 사용자 정의하는 방법
  • WooCommerce 주문을 테스트하는 3가지 방법
  • WooCommerce AJAX 제품 필터를 추가하는 방법

스토어에서 주문 상태를 업데이트했습니까? 이 가이드를 따르는 데 문제가 있었습니까? 아래 의견에 알려주십시오!