programing

woocommerce_order_status_hooks 후크: 오래된 상태와 새로운 상태를 유지하시겠습니까?

javamemo 2023. 2. 24. 13:13
반응형

woocommerce_order_status_hooks 후크: 오래된 상태와 새로운 상태를 유지하시겠습니까?

WooCommerce 후크를 사용하여 주문의 이전 상태와 새 상태를 가져오려면 어떻게 해야 합니까?woocommerce_order_status_changed?

이건 내 코드인데$order_id채워져 있습니다.

add_action('woocommerce_order_status_changed','woo_order_status_change_custom');
function woo_order_status_change_custom($order_id,$old_status,$new_status) {
//order ID is filled
//old_status and new_status never
//tested by logging the parameters
}

이제 다음 코드를 사용하여 새 상태를 쉽게 얻을 수 있습니다.

 $order = new WC_Order( $order_id );
$orderstatus = $order->status;

하지만 어떻게 하면 이전 주문 상태를 알 수 있을까요?$old_status비어있나요?

wc 훅을 찾다가 이 포스트를 발견했습니다.파라미터가 설정되지 않은 이유는 add_action 함수에 인수가 없기 때문입니다.이 함수는 기본적으로 하나의 매개 변수만 사용합니다.이 세 가지를 모두 사용하려면 다음을 사용해야 합니다.

add_action('woocommerce_order_status_changed', 'woo_order_status_change_custom', 10, 3);

10는 Wordpress의 액션에 대한 기본 순서입니다.마지막 인수는 Wordpress가 커스텀액션에 전달해야 하는 파라미터의 수입니다.

add_action 호출 끝에 NUMBER 매개 변수를 추가하지 않았기 때문입니다.올바른 행은 다음과 같습니다.

add_action('woocommerce_order_status_changed','woo_order_status_change_custom', 10, 3);

"10, 3"은 "3개의 파라미터를 콜백 함수로 전송하고 싶다"를 의미합니다.디폴트로는 송신되는 파라미터(order_id)는 1개뿐입니다.

이 코드를 사용해 보세요.제 말에 따르면 당신의 의견을 바탕으로 작동해야 합니다.

add_action( 'save_post', 'wpse63478_save' );
function wpse63478_save() {

 if(!current_user_can('manage_options'))
   return false;
 if(!is_admin())
    return false;
 if($_REQUEST['post_type'] != 'shop_order')
    return false;
 if($_REQUEST['post_ID']!='')
 {
    $orderId = $_REQUEST['post_ID'];
    $order = new WC_Order( $orderId );
    $currentStatus = $order->status;
    $requestedStautus = $_REQUEST['order_status'];
    if ( $requestedStautus== 'on-hold' and $currentStatus == 'completed') {
        //Do your work here
    }
 }
}

언급URL : https://stackoverflow.com/questions/46090181/woocommerce-order-status-changed-hook-getting-old-and-new-status

반응형