WooCommerce : 자동 완성 된 주문 (결제 수단에 따라 다름)
PHPWooCommerce : 자동 완성 된 주문 (결제 수단에 따라 다름)
일반적으로 wooCommerce는 가상 제품 주문을 자동 완료해야합니다. 하지만 그렇지 않습니다. 그리고 이것은 실제 문제입니다. 심지어는 BUG도 마찬가지입니다.
그래서이 시점에서 somme 유용한 것들을 찾을 수 있습니다 (그러나 정말로 편리하지는 않습니다) :
* BACS는 직접 은행 이체 지불 방법입니다.
그리고 ...
내 질문:
포인트 1의 wooCommerce 스 니펫을 (기초로) 사용 :
woocommerce 지불 방법을 기반으로 조건부 코드를 구현하려면 어떻게해야합니까?
나는 지불 방법이 "BACS", "Pay on delivery"및 "Check"가 아닌 경우 스 니펫 코드 (가상 제품 관련 유료 주문의 상태를 "completed"로 업데이트)를 적용합니다.
나는 wooCommerce 메가 전문가 코더가 아니므로, 아직 woocommerce 주문에서 지불 방법을 타겟팅하는 방법을 찾지 못했습니다.
어떤 도움은 아주 좋을 것입니다.
감사.
해결법
-
==============================
1.이 문제에 대한 해결책을 찾았습니다 (WC 3 이상에서 작동).
이 문제에 대한 해결책을 찾았습니다 (WC 3 이상에서 작동).
/** * AUTO COMPLETE PAID ORDERS IN WOOCOMMERCE */ add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_paid_order', 10, 1 ); function custom_woocommerce_auto_complete_paid_order( $order_id ) { if ( ! $order_id ) return; $order = wc_get_order( $order_id ); // No updated status for orders delivered with Bank wire, Cash on delivery and Cheque payment methods. if ( ( 'bacs' == get_post_meta($order_id, '_payment_method', true) ) || ( 'cod' == get_post_meta($order_id, '_payment_method', true) ) || ( 'cheque' == get_post_meta($order_id, '_payment_method', true) ) ) { return; } // "completed" updated status for paid Orders with all others payment methods else { $order->update_status( 'completed' ); } }
코드는 활성 자식 테마 (또는 활성 테마)의 function.php 파일에 있습니다.
이 게시물의 도움으로 : 어떻게 ID로 WooCommerce 주문에 지불 방법을 확인하려면?
이걸로 : get_post_meta ($ order_id, '_payment_method', true); 헬 게이트 워킹에서
은행 송금, 대금 상환 및 수표 지불 방법은 무시되며 원래 주문 상태로 유지됩니다.
WC 3.0 이상 (2017-06-10)과의 호환성을 위해 코드를 업데이트했습니다.
add_action( 'woocommerce_thankyou', 'wc_auto_complete_paid_order', 20, 1 ); function wc_auto_complete_paid_order( $order_id ) { if ( ! $order_id ) return; // Get an instance of the WC_Product object $order = wc_get_order( $order_id ); // No updated status for orders delivered with Bank wire, Cash on delivery and Cheque payment methods. if ( in_array( $order->get_payment_method(), array( 'bacs', 'cod', 'cheque', '' ) ) ) { return; // Updated status to "completed" for paid Orders with all others payment methods } else { $order->update_status( 'completed' ); } }
코드는 활성 자식 테마 (또는 활성 테마)의 function.php 파일에 있습니다.
from https://stackoverflow.com/questions/35686707/woocommerce-auto-complete-paid-orders-depending-on-payment-methods by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
PHP의 인터페이스 포인트는 무엇입니까? (0) | 2018.09.19 |
---|---|
PHP는 - 개행 문자를 만드는 방법? (0) | 2018.09.19 |
PHP 배열의 모든 순열을 얻으시겠습니까? (0) | 2018.09.19 |
PHP에서 업로드 할 때 특정 파일 형식 만 허용 할 수 있습니까? (0) | 2018.09.19 |
PHP 5.3 및 5.4 또는 일부 구성 불일치로 배열에 액세스 할 때의 차이점은 무엇입니까? (0) | 2018.09.19 |