2017-09-17 12 views
2

Woocommerce에서는 주문이 "처리 중"인 경우 모든 Woocommerce Subscription을 "활성"이 아닌 "보류 중"으로 자동 설정하려고합니다. 주문을 '완료'로 표시하면 구독이 '활성'으로 변경됩니다."Active"가 아닌 "On-Hold"로 자동 변경 Woocommerce Subscription 상태

내가 생각할 수있는 모든 것을 시도해 보았습니다. 누군가가 어떻게하는지 알고 있다면 알려주세요.

저는 워드 프레스 4.8.1/Woocommerce 3.1.2/Woocommerce Subscriptions 2.2.7 /을 실행 중이며 지불 게이트웨이는 스트라이프 3.2.3입니다.

이 두 단계로 수행 될 수

답변

1

: 주문 구독은 '처리의 상태를 가지고 포함 woocommerce_thankyou 액션 후크 걸어 맞춤 기능으로

1), 우리는 업데이트 구독 상태 '보류'에 :

add_action('woocommerce_thankyou', 'custom_thankyou_subscription_action', 50, 1); 
function custom_thankyou_subscription_action($order_id){ 
    if(! $order_id) return; 

    $order = wc_get_order($order_id); // Get an instance of the WC_Order object 

    // If the order has a 'processing' status and contains a subscription 
    if(wcs_order_contains_subscription($order) && $order->has_status('processing')){ 

     // Get an array of WC_Subscription objects 
     $subscriptions = wcs_get_subscriptions_for_order($order_id); 
     foreach($subscriptions as $subscription_id => $subscription){ 
      // Change the status of the WC_Subscription object 
      $subscription->update_status('on-hold'); 
     } 
    } 
} 

코드는 플러그인 파일도 function.php의 활성 자식 테마 (또는 테마)의 파일이나 간다. 주문 상태가 「완료」로 변경 woocommerce_order_status_completed 액션 후크 꺾어 지정 함수와

2) 그 것이다 자동 변경 "활성"에 가입 상태 :

// When Order is "completed" auto-change the status of the WC_Subscription object to 'on-hold' 
add_action('woocommerce_order_status_completed','updating_order_status_completed_with_subscription'); 
function updating_order_status_completed_with_subscription($order_id) { 
    $order = wc_get_order($order_id); // Get an instance of the WC_Order object 

    if(wcs_order_contains_subscription($order)){ 

     // Get an array of WC_Subscription objects 
     $subscriptions = wcs_get_subscriptions_for_order($order_id); 
     foreach($subscriptions as $subscription_id => $subscription){ 
      // Change the status of the WC_Subscription object 
      $subscription->update_status('active'); 
     } 
    } 
} 

코드는 활성 자녀 테마 (또는 테마)의 function.php 파일 또는 모든 플러그인 파일에 있습니다.

모든 코드가 Woocommerce 3+와 작품에 테스트됩니다.

+1

정말 고마워요! 그것은 완벽하게 작동했습니다. 같은 시간에 설명하면서 해결책을 제시해 주셔서 감사합니다. – Daniel

+0

나는 WooCommerce Subscription Status On Hold에 관한 튜토리얼을 읽었습니다. 나는 이것이 당신에게 도움이 될 것이라고 생각합니다. https://www.cloudways.com/blog/woocommerce-subscription-status-on-hold/ –