2017-04-14 1 views
1

각 주문 후 이메일을 보내려고합니다. 내가 가진 문제는 $order->get_total()뿐만 아니라 get_total_tax 반환 대신 실제 주문 총 값입니다. $ ORDER_ID 및 $order->id 외에신규 주문 후 주문 데이터 가져 오기

add_action('woocommerce_new_order', 'custom_after_order_created_hook', 12 , 1); 
function custom_after_order_created_hook($order_id) { 
    $order = new WC_Order($order_id); 

    $with_tax = $order->get_total(); 
    $tax = $order->get_total_tax(); 
    $without_tax = $with_tax - $tax; 

    $to = "[email protected]"; 
    $subject = "New order"; 
    $content = " 
    New order {$order->id} 
    With tax: {$with_tax} 
    Without tax: {$without_tax} 
    Tax: {$tax} 
    "; 

    $status = wp_mail($to, $subject, $content); 
} 

모든 값은 0 $의 ORDER_ID 적절한 값을 가지고로 평가됩니다. 이 문제는 woocommerce_new_order 후크를 사용하는 경우에만 발생합니다 (맞춤 페이지에서 사용하려고 시도했는데 제대로 작동 함) 궁금합니다.

여기에 어떤 문제가 있는지 모르겠지만 내 코드 비동기의 일부입니까?
또는 유료/유료 정보로 주문을 업데이트하기 전에이 고리가 호출 되었습니까?
여기에서 가격 정보를 얻으려면 어떻게해야합니까?

감사합니다.

+0

WC? –

답변

2

이 woocommerce_new_order 액션 훅은 create_order() 함수를 변경하는 데 사용됩니다. 어떤 플러그인도

// Tested on WooCommerce versions 2.6+ and 3.0+ 
add_action('woocommerce_thankyou', 'new_order_custom_email_notification', 1, 1); 
function new_order_custom_email_notification($order_id) { 
    if (! $order_id) return; 

    // Getting an instance of WC_Order object 
    $order = wc_get_order($order_id); 

    $with_tax = $order->get_total(); 
    $tax = $order->get_total_tax(); 
    $without_tax = $with_tax - $tax; 

    $to = "[email protected]"; 
    $subject = "New order"; 
    $content = " 
    New order {$order_id} 
    With tax: {$with_tax} 
    Without tax: {$without_tax} 
    Tax: {$tax} 
    "; 

    wp_mail($to, $subject, $content); 
} 

코드 활성 자식 테마 (또는 테마)의 function.php 파일이되거나 : 그래서 당신은 더 나은 woocommerce_thankyou 행동 순서가 생성되었을 때 사용자 정의 이메일 알림을 트리거 후크를 사용 파일.

코드가 테스트되었으며 작동합니다. woocommerce_checkout_order_processed 액션 후크 대신 woocommerce_thankyou 액션 훅을 사용

도 좋은 대안이다, 더 나은 수 있습니다.

add_action('woocommerce_thankyou', 'new_order_custom_email_notification', 1, 1); 

으로 :에 위치한 Woocommerce - How to send custom emails based on payment type


woocommerce_checkout_order_processed 후크 (:

add_action('woocommerce_checkout_order_processed', 'new_order_custom_email_notification', 1, 1); 

비슷한 작업 대답 당신은 대체 단지가이 방법으로도 편리 할 수 ​​있습니다.

소스 코드 WC_Checkout process_checkout()구매 흐름에서 볼 수 있습니다.

+0

감사합니다, 내가 의심하는 것. 혹시라도 구매 흐름 전체가 어딘지에 기록되어 있는지 알 수 있습니까? 공식 문서는 지금까지별로 도움이되지 않습니다. – mymlyn

+0

@mymlyn WooCommerce의 구매 흐름에 대한 답변 (최종적으로)에 대한 답변이 새겨 져 있습니다. 이게 당신을 도울 수 있기를 바랍니다. 따라서 woocommerce_checkout_order_processed를 사용할 수 있습니다. – LoicTheAztec