source

woocommerce_order_status_inters가 트리거되지 않았습니다.

itover 2023. 2. 7. 19:47
반응형

woocommerce_order_status_inters가 트리거되지 않았습니다.

woocommerce 오더 완료 후 작업을 수행하는 커스텀 플러그인을 쓰고 싶은데 이 훅이 작동하지 않습니다.이 질문이 여러 번 나오는 걸 볼 수 있어요.

이쪽 : https://wordpress.stackexchange.com/questions/134463/woocommerce-order-status-completed-action-hook-not-working

여기: https://wordpress.org/support/topic/woocommerce_order_status_completed-is-not-working

다음은 https://wordpress.org/support/topic/woocommerce_order_status_completed-action-hook-not-working 입니다.

하지만 이 사람들이 받은 답변은 어쩔 수 없어요.

몇 가지 다른 방법으로 액션을 추가하려고 했습니다.

add_action( 'woocommerce_order_status_completed', 'ikwoocommerceorderstatuscompleted_func');

add_action( 'woocommerce_order_status_completed', array($this,'ikwoocommerceorderstatuscompleted_func'), 10, 1);

add_action( 'woocommerce_order_status_completed', array(&$this,'ikwoocommerceorderstatuscompleted_func'), 10, 1);

클래스에서도 시도:

class IKHooks {
    function __construct() {
        add_action( 'woocommerce_order_status_completed', array($this,'ikwoocommerceorderstatuscompleted_func'), 10, 1);
    }

    public function ikwoocommerceorderstatuscompleted_func( $order_id ) {

    }
}

심지어 수업 시간 외에 행동을 하려고도 했습니다.

add_action( 'woocommerce_order_status_completed', array(IKHooks,'ikwoocommerceorderstatuscompleted_func'), 10, 1);

이러한 예는 모두 동작하지 않습니다. : (

후크를 호출하기 전에 다음 단계를 확인하십시오.

  1. 주문완료 이메일이 발송되었는지 확인합니다.

  2. 테마에 .functions.php

add_action( 'woocommerce_order_status_completed','callback_function_name' );

function callback_function_name(){
  global $wp_filter;
  print_r($wp_filter);
  exit;
}

콜백 함수의 이름이 후크 배열에 있는지 확인합니다.

[woocommerce_order_status_completed] => Array
    (
        [10] => Array
            (
                [wc_paying_customer] => Array
                    (
                        [function] => wc_paying_customer
                        [accepted_args] => 1
                    )

                [wc_downloadable_product_permissions] => Array
                    (
                        [function] => wc_downloadable_product_permissions
                        [accepted_args] => 1
                    )

                [callback_function_name] => Array
                    (
                        [function] => callback_function_name
                        [accepted_args] => 3
                    )

            )

    )

이 된다면,나 주제와 수 것을 합니다.functions.php 또는 한 후 " "를 .remove_action ★★★★★★★★★★★★★★★★★」remove_all_actions아마 그것 때문에 후크가 불리지 않을 거예요

이 방법으로 확인할 수도 있습니다.

add_action( 'woocommerce_order_status_completed', 'callback_function_name', 1);

후크의 우선순위를 10에서1로 변경하여 다른 액션 또는 후크보다 먼저 호출합니다.

갈고리를 .

add_action( 'woocommerce_order_status_changed', 'your_function', 99, 4 );

그리고 함수는 다음과 같이 보일 것이다.

function your_function( $order_id, $old_status, $new_status, $order ){
    if( $new_status == "completed" ) {
        //your code here
    }
}

이것이 도움이 되기를 바랍니다.

앞서 이와 유사한 문제에 직면하여 다음과 같이 해결했습니다.

에서는 순서 를 '나다'로 합니다.completed

add_action( 'woocommerce_thankyou', 'your_wc_autocomplete_order' );

function your_wc_autocomplete_order( $order_id ) {

 if ( ! $order_id ) {
   return;
 }

 $order = wc_get_order( $order_id );

 $order->update_status( 'completed' );

}

주문이 완료되면 다음 코드를 참조하십시오.

add_action('woocommerce_order_status_completed','payment_complete');

function payment_complete($order_id)
{
   //global $items;
   //$order = new WC_Order($order_id);
   // do something ...
}

효과가 있기를 바랍니다. :)

woocommerce_order_status_changed ★★★★★★★★★★★★★★★★★」woocommerce_order_status_completed★★★★★★★★★★★★★★★★★★★★★★★★★★★이틀 동안 고생한 끝에 var_dump, var_export, print_r 등 관리패널에서 아무것도 할 수 없다는 것을 알게 되었습니다.

만약 당신이 나처럼 초보이고 그러한 행동이 효과가 없다고 생각한다면, 예를 들어 메일을 보내는 것과 같은 다른 행동을 촉발시켜보세요.

이 코드는 동작합니다.

function your_function( $order_id ){
   $order = new WC_Order( $order_id );
    $to_email = 'testing_mail@sample.com';
    $payment = $order->get_payment_method_title();
    $headers = 'From: Your Name <Your_site_mail@address.com>' . "\r\n";
    wp_mail($to_email, 'subject', $payment, $headers );
}

add_action( 'woocommerce_order_status_completed', 'your_function');

훅을 해 보세요.woocommerce_order_status_changed
4개의 파라미터가 필요합니다.order id, old status 새 상태순서.추가 코드 참조는 이쪽

이 방법은 고객님의 요구 사항에 정확히 부합하지 않을 수 있지만, 다른 대안이 될 만한 가치가 있는 것 같습니다.이게 도움이 됐으면 좋겠다.

당신이 이 남자를 쫓고 있는 것 같아요. woocommerce_payment_complete

function mysite_woocommerce_payment_complete( $order_id ) {
    error_log( "Payment has been received for order $order_id", 0 );
}
add_action( 'woocommerce_payment_complete', 'mysite_woocommerce_payment_complete' );

언급URL : https://stackoverflow.com/questions/36315825/woocommerce-order-status-completed-not-triggered

반응형