bestsource

Woocommerce 3 전용 주문 제작 후크

bestsource 2023. 10. 31. 22:27
반응형

Woocommerce 3 전용 주문 제작 후크

새로운 WooCommerce 주문이 성공적으로 작성되고 '프로세싱'으로 설정된 시점을 감지해야 합니다. 이는 추가 기능 등을 추가하기 위함입니다.WooCommerce를 통해 주문이 생성될 때 쉽게 연결할 수 있으므로 프론트엔드에서 이 작업을 수행하는 것이 좋습니다.woocommerce_thankyou아니면woocommerce_order_status_processing갈고리에 갈고리

문제는 웹사이트 백엔드를 통해 수동으로 새로운 주문을 작성할 때도 이것이 작동하기를 원한다는 것입니다.주문을 생성할 때 주문을 조작하기 위해 사용하는 수동으로 주문을 추가할 때 몇 가지 사용자 정의 필드를 사용하고 있습니다.불행하게도, 비록woocommerce_order_status_processing관리자 주문의 경우 메타가 저장되기 전에 트리거되는 것처럼 보이기 때문에 메타 데이터를 검색하려고 하면 비어 있습니다.

이 문제를 해결하기 위해, 저는 관리자로부터의 주문 작성을 위한 WooCommerce hook 또는 WordPress hook을 사용하는 이 GitHub 스레드에 대한 제안을 시도했습니다.wp_insert_post아니면save_post_shop_order(save_post_{$post->post_type}). 이것은 주문 메타가 저장된 후에 트리거 되는 것처럼 보이기 때문에 내 주문 메타 문제를 해결하는 데 도움이 됩니다.

그러나 — 업데이트 또는 새 게시물이 있을 마다 트리거되므로 새 게시물인지 여부를 탐지할 수 있는 방법을 찾아야 합니다.있습니다.$update이러한 후크의 매개 변수는 '기존 게시물이 업데이트되고 있는지 여부'를 표시하기 위한 것이지만, 어떤 이유로 인해 새로운 게시/주문인 경우에도 항상 true로 설정되는 것으로 보입니다.

요약하자면:

  • 백엔드를 통해 주문/포스트 메타가 생성된 후에 트리거되는 워드프레스/우커머스 후크와 주문이 새로 생성되고 업데이트되지 않을 때만 이를 실행하는 방법이 필요합니다.

내가 생각할 수 있는 유일한 잠재적인 방법은 게시 날짜 대 수정 날짜를 확인하는 이 제안에 따라 하는 것이지만 나는 단지 이것을 하는 더 나은 방법이 있을 것이라고 생각했습니다!

혹시 모르니 여기 제 코드가 있습니다.

function my_order_created ( $post_id, $post, $update ) {

    // Don’t run if $post_id doesn’t exist OR post type is not order OR update is true
    if ( ! $post_id || get_post_type( $post_id ) != 'shop_order' || $update == 1 ) {
        return;
    }

    $order = wc_get_order( $post_id );

    if ( $order && $order->has_status( 'processing' ) ){

        // Do something

    }    

}

add_action( 'wp_insert_post', 'my_order_created', 10, 3 );

사용가능woocommerce_new_order후크:

add_action('woocommerce_new_order', function ($order_id) {
     // your code
}, 10, 1);

업데이트 2023

CRUD 메소드와 데이터 스토어를 구현한 WooCommerce 3이므로 주문 작성특별히 사용할 수 있는 전용 후크가 있습니다. :

사용가능woocommerce_new_order (메소드에create() 위치한) 주문 작성 시 사용자 지정 코드를 트리거할 수 있는 액션 후크.

add_action('woocommerce_new_order', 'action_woocommerce_new_order', 10, 2);
function action_woocommerce_new_order( $order_id, $order ) {
     // Here your custom action code
} 

또한 있습니다.woocommerce_new_order_data 함수 내부의 일부 데이터를 필터링할 수 있는 필터 후크wp_insert_post()주문 작성 시 저장하기 전(메소드에create() 위치)

add_filter('woocommerce_new_order_data', 'action_woocommerce_new_order_data', 10, 2);
function action_woocommerce_new_order( $data_arr, $wp_error ) {
     // Here your custom code to filter data

     // Always return the main argument
     return $data_arr;
} 

이것은 단지 우커머스 주문 제작을 위한 이기 때문에 훨씬 더 나은 옵션입니다.

언급URL : https://stackoverflow.com/questions/52094274/hooks-for-order-creation-exclusively-in-woocommerce-3

반응형