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
'bestsource' 카테고리의 다른 글
mariadb REGEXP_INSTR은 괄호를 사용할 때 0 또는 1을 반환합니다. (0) | 2023.11.05 |
---|---|
argv 포인터를 글로벌하게 사용해도 안전합니까? (0) | 2023.11.05 |
웹 브라우저 제어 기능이 있는 Excel 사용자 지정 작업 창 - 키보드/초점 문제 (0) | 2023.10.31 |
그래픽 드라이버 "헬로 월드" 예시? (0) | 2023.10.31 |
MySQL 테이블에 열의 복사본을 빠르게 추가합니다. (0) | 2023.10.31 |