2017-12-18 18 views
1

다음 코드를 사용하여 Woocommerce "주문 처리"및 "주문 완료"고객 전자 메일의 주문 표 뒤에 사용자 지정 콘텐츠를 추가하려고합니다.WooCommerce 고객 처리 및 주문 전자 메일 알림 대상 지정

고객이 배송 방법으로 '현지 픽업'을 선택한 경우에만 추가해야합니다.

function local_pickup_extra_content_email($order, $is_admin_email) { 
    if ($is_admin_email) { 
     return; 
    } 

    if (ICL_LANGUAGE_CODE == "he" && strpos($order->get_shipping_method(), 'Local Pickup') !== false) { 
     echo '<p><strong>Note:</strong> Please wait for telephone confirmation of local pickup.</p>'; 
    } 
} 

add_action('woocommerce_email_after_order_table', 'local_pickup_extra_content_email', 10, 2 ); 

콘텐츠가 지정된 이메일에 추가되지 않았습니다. Woocommerce 주문 관리 페이지를 통해 수동으로 전송되는 "주문 내역/송장"이메일에만 추가됩니다.

언급 된 이메일에 위 내용을 어떻게 추가 할 수 있습니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?
(이메일 템플릿은 테마 폴더에서 재정의되지 않음)

답변

1

이 누락 된 후크 인수 $email을 통해 그 이메일 알림을 대상으로 쉽게 수행 할 수 있습니다,이 방법 :

add_action('woocommerce_email_after_order_table', 'local_pickup_extra_content_email', 10, 4 ); 
function local_pickup_extra_content_email($order, $sent_to_admin, $plain_text, $email) { 
    // Only for "Processing Order" and "Order Completed" customer emails 
    if(! ('customer_processing_order' == $email->id || 'customer_completed_order' == $email->id)) return; 

    $lang = get_post_meta($order->id, 'wpml_language', true); 
    if ($lang == 'he' && && strpos($order->get_shipping_method(), 'Local Pickup') !== false) { 
     echo '<p><strong>Note:</strong> Please wait for telephone confirmation of local pickup.</p>'; 
    } 
} 

이 코드는 활성 자식 테마 (또는 테마)의 function.php 파일 또는 모든 플러그인 파일에 저장됩니다.

는 테스트 및 작동


유사 답 : Add a custom text to specific email notification for local pickup Woocommerce orders

+0

답장을 보내 주셔서 감사합니다. WPML 조건으로 인해 작동하지 않았습니다. ICL_LANGUAGE_CODE == "he"' Woocommerce 이메일을 보낼 때'ICL_LANGUAGE_CODE'이 (가) 존재하지 않습니다. 이 문제를 해결하기 위해 위의 줄을 다음과 같이 바꾸 었으며 매력처럼 작동했습니다 : '$ lang = get_post_meta ($ order-> id, 'wpml_language', true); ' 'if ($ lang == 'he'&& ...) {' –

+1

내 실수는 옳다. 나는 당신의 대답에 합격 한 체크 마크를주었습니다. –

1

이 때문에 if 문에서 내 WPML 조건으로 작동하지 않았다 :

ICL_LANGUAGE_CODE == "he" 

나는 생각하지 않는다 Woocommerce가 이메일을 보낼 때 ICL_LANGUAGE_CODE가 존재합니다. 이 문제를 해결하기 위해 위 질문에서 if 문을 다음과 같이 바꿨습니다. 매력처럼 작동했습니다.

$lang = get_post_meta($order->id, 'wpml_language', true); 
if ($lang == 'he' && && strpos($order->get_shipping_method(), 'Local Pickup') !== false) { 
    echo '<p><strong>Note:</strong> Please wait for telephone confirmation of local pickup.</p>'; 
}