2015-02-07 42 views
3

在woocommerce,我有2個產品,其中有產品說明PDF。Woocommerce發送PDF附件,以便電子郵件只爲2個產品

如果客戶購買了這兩種產品中的任何一種,我希望將其PDF與訂單確認電子郵件一起發送。

現在,我使用這個代碼與訂單確認電子郵件發送PDF -

add_filter('woocommerce_email_attachments', 'attach_terms_conditions_pdf_to_email', 10, 3); 

function attach_terms_conditions_pdf_to_email ($attachments, $status , $order) { 

    $allowed_statuses = array('new_order', 'customer_invoice', 'customer_processing_order', 'customer_completed_order'); 

    if(isset($status) && in_array ($status, $allowed_statuses)) { 
     $your_pdf_path = get_template_directory() . '/media/test1.pdf'; 
     $attachments[] = $your_pdf_path; 
    } 
return $attachments; 
} 

但這PDF發送給所有訂單電子郵件。 我只想在客戶購買其中一種產品時才發送PDF。

我想我需要添加條件與產品ID或東西。

+0

你只是檢查電子郵件(狀態)的類型,而不是如果產品在訂單內。 – Adrian 2016-03-11 07:42:24

回答

0

您可以檢索訂單項與$order->get_items() 所有你需要做的是遍歷數組,並檢查相應的產品ID:

function attach_terms_conditions_pdf_to_email ($attachments, $status , $order) { 

$allowed_statuses = array('new_order', 'customer_invoice', 'customer_processing_order', 'customer_completed_order'); 

if(isset($status) && in_array ($status, $allowed_statuses)) { 

    $attachment_products = array(101, 102) // ids of products that will trigger email 
    $send_email = false; 
    $order_items = $order->get_items(); 

    foreach ($order_items as $item) { // loop through order items 
     if(in_array($item['product_id'], $attachment_products)) { // compare each product id with listed products ids 
      $send_email = true; 
      break; // one match is found ; exit loop 
     } 
    } 

    if($send_email) { 
     $your_pdf_path = get_template_directory() . '/media/test1.pdf'; 
     $attachments[] = $your_pdf_path; 
    } 
} 
return $attachments; 
} 
相關問題