WooCommerce 주문변경현황 BACS처리
WooCommerce에서는 BACS(직접 은행 송금)와 함께 발주된 모든 주문은 로 설정됩니다.
이것을 자동으로 처리로 변경하는 방법은 무엇입니까?
나는 그것이 안에서 일하는 것을 원하지 않는다.
다음 코드를 사용하지만 작동하지 않습니다.
add_filter( 'woocommerce_payment_complete_order_status', 'rfvc_update_order_status', 10, 2 );
function rfvc_update_order_status( $order_status, $order_id ) {
$order = new WC_Order( $order_id );
if ( 'on-hold' == $order_status && 'on-hold' == $order->status ) {
return 'processing';
}
return $order_status;
}
어떤 도움이라도 좋아요!
새로운 2020 업데이트
WooCommerce 버전 3.4는 보다 훨씬 더 나은 후크를 도입했습니다.woocommerce_thankyou
또는woocommerce_thankyou_bacs
BACS 결제방법의 기본 주문상태를 변경할 수 있습니다.
이 훅을 사용하면 다음과 같이 됩니다.
- 필요한 코드를 명확하게 밝힙니다.
- BACS 주문 시 고객에게 "보류" 알림을 피하십시오.
그 대신 다음을 사용합니다.
add_filter( 'woocommerce_bacs_process_payment_order_status','filter_bacs_process_payment_order_status_callback', 10, 2 );
function filter_bacs_process_payment_order_status_callback( $status, $order ) {
return 'processing';
}
코드는 기능합니다.php 파일(또는 활성 테마)입니다(또는 활성 테마)을 입력합니다.테스트 및 동작.
원답:
갱신하다 (마지막에 woocommerce 3+ 버전 추가)
인 것 같다woocommerce_payment_complete_order_status
액션 훅은 BACS 지불 방법에서는 트리거되지 않습니다.
이 스레드를 바탕으로 하면'woocommerce_thankyou'
액션 후크는 다음 작업을 수행합니다.
add_action( 'woocommerce_thankyou', 'bacs_order_payment_processing_order_status', 10, 1 );
function bacs_order_payment_processing_order_status( $order_id ) {
if ( ! $order_id ) {
return;
}
// Get an instance of the WC_Order object
$order = new WC_Order( $order_id );
if ( ( get_post_meta($order->id, '_payment_method', true) == 'bacs' ) && ('on-hold' == $order->status || 'pending' == $order->status) ) {
$order->update_status('processing');
} else {
return;
}
}
코드가 기능합니다.php 파일에는 액티브한 아이 테마(또는 활성 테마).테스트 및 동작합니다.
woocommerce 3+ 버전의 경우:
여기에서는 같은 컴포지트훅을 사용합니다.
add_action( 'woocommerce_thankyou_bacs', 'bacs_order_payment_processing_order_status', 10, 1 );
function bacs_order_payment_processing_order_status( $order_id ) {
if ( ! $order_id ) {
return;
}
// Get an instance of the WC_Order object
$order = wc_get_order( $order_id );
if ( in_array( $order->get_status(), array('on-hold', 'pending') ) ) {
$order->update_status('processing');
} else {
return;
}
}
코드가 기능합니다.php 파일에는 액티브한 아이 테마(또는 활성 테마).테스트 및 동작합니다.
BACS '지급' 처리 시 상태를 설정할 수 있는 새로운 필터가 있습니다.
/**
* Change the default status when BACS 'payment' is processed.
*
* @see WC_Gateway_BACS::process_payment()
* woocommerce/includes/gateways/bacs/class-wc-gateway-bacs.php:362
* @since Mar 8, 2018
* @link https://github.com/woocommerce/woocommerce/blob/750fda3b1b55c55645f626d3873d956282e3ac1b/includes/gateways/bacs/class-wc-gateway-bacs.php#L364
*
* @filter woocommerce_bacs_process_payment_order_status
* @priority 10
* @args 2
*
* @param string $status Status to filter. Default 'on-hold'.
* @param WC_Order $order
* @return string New status 'processing'.
*/
add_filter( 'woocommerce_bacs_process_payment_order_status', function( $status = 'on_hold', $order = null ) {
return 'processing';
}, 10, 2 );
코드를 다음과 같이 변경해 보십시오.
function rfvc_update_order_status( $order_status, $order_id ) {
$order = new WC_Order( $order_id );
if ( 'on-hold' == $order_status && 'on-hold' == $order->status ) {
$order->update_status('processing', 'order_note');
}
return $order_status;
}
여기서의 주요 변경 사항은 다음과 같습니다.
$order->update_status('processing', 'order_note');
원하시면 주문서를 추가하실 수도 있습니다.
언급URL : https://stackoverflow.com/questions/36597663/woocommerce-change-order-status-bacs-processing
'programing' 카테고리의 다른 글
Elastic Search에서 부분 일치를 수행하려면 어떻게 해야 합니까? (0) | 2023.03.26 |
---|---|
ui 라우터 - 공유 컨트롤러가 포함된 중첩된 보기 (0) | 2023.03.26 |
ng-repeat의 마지막 요소의 다른 클래스 (0) | 2023.03.26 |
MS SQL Server Management Studio FREE EDITION과 동등한 Oracle은 무엇입니까? (0) | 2023.03.26 |
네스트된 ng-dex 내에서 2개의 $index 값 전달 (0) | 2023.03.26 |