2016-06-24 38 views
6

Tôi đang cố gửi email đơn đặt hàng và email hóa đơn của khách hàng thông qua tệp functions.php.WooCommerce - Gửi đơn đặt hàng mới/Email hóa đơn khách hàng từ tệp functions.php

Làm thế nào để kích hoạt đối tượng đặt hàng hoàn chỉnh để gửi dưới dạng email?

Tôi đang thử hai loại mã khác nhau.

add_action('woocommerce_payment_complete', 'my_custom_checkout_field_looking'); 
function my_custom_checkout_field_looking($order_id) { 
    $order = new WC_Order($order_id); 

    // first type of Code. Send Email but did not send complete order object. 

    $mailer = WC()->mailer(); 
    $subject = 'New Order Email # ' . $order_id; 
    $mailer->send('[email protected]', $subject, $mailer->wrap_message($subject, $order), '', ''); 

    // Second type of Code. Do not send email and doing nothing 

    global $woocommerce; 
    $mailer2 = $woocommerce->mailer(); 
    // Email customer with order-processing receipt 
    $email = $mailer2->emails['WC_Email_Customer_Invoice']; 
    $email->trigger($order); 
    // Email admin with new order email 
    $email = $mailer2->emails['WC_Email_New_Order']; 
    $email->trigger($order); 
} 
+0

cách tiếp cận hơi khác nhau, nhưng bạn có thể thử đăng ký một [email tùy chỉnh] (https://www.skyverge.com/blog/how-to-add-a-custom-woocommerce-email/) – helgatheviking

+0

Bạn có ý nghĩa gì với "đối tượng hoàn chỉnh"? Giống như "var_dump version" của $ order? –

+0

Khi bạn muốn kích hoạt thư? như khi người dùng đặt hàng hoặc thông qua một số liên kết/hành động tùy chỉnh hoặc cho trạng thái đơn đặt hàng tùy chỉnh? –

Trả lời

3

Tôi nghĩ bạn cần loại mã như vậy.

add_action('woocommerce_thankyou', 'my_custom_new_order_email'); 
function my_custom_new_order_email($order_id) { 

     $order = new WC_Order($order_id); 

     $billing_address = $order->get_formatted_billing_address(); // for printing or displaying on web page 
     $shipping_address = $order->get_formatted_shipping_address(); 
     $email = $order->billing_email; 
     $name = $order->billing_first_name.' '.$order->billing_last_name; 
     $billing_phone = $order->billing_phone; 
     $date = date('M d, Y'); 

     $data = ''; 
     $data .= "<table border='0' cellpadding='0' cellspacing='0' width='600'><tbody><tr> 
     <td valign='top' style='background-color:#fdfdfd'> 
     <table border='0' cellpadding='20' cellspacing='0' width='100%'> 
     <tbody> 
     <tr> 
     <td valign='top' style='padding:48px'> 
     <div style='color:#737373;font-family:&quot;Helvetica Neue&quot;,Helvetica,Roboto,Arial,sans-serif;font-size:14px;line-height:150%;text-align:left'> 
     <span> 
     <p style='margin:0 0 16px'> 
     You have received an order from $name. The order is as follows: 
     </p> 
     </span> 
     <h2 style='color:#557da1;display:block;font-family:&quot;Helvetica Neue&quot;,Helvetica,Roboto,Arial,sans-serif;font-size:18px;font-weight:bold;line-height:130%;margin:16px 0 8px;text-align:left'> 
     Order # $order_id ($date) 
     </h2> 
     <div> 
     <div>"; 
     if(sizeof($order->get_items()) > 0) {   
      $data .= "<table cellspacing='0' cellpadding='6' style='width:100%;border:1px solid #eee' border='1'> 
      <thead> 
      <tr> 
      <th scope='col' style='text-align:left;border:1px solid #eee;padding:12px'> 
      Product 
      </th> 
      <th scope='col' style='text-align:left;border:1px solid #eee;padding:12px'> 
      Quantity 
      </th> 
      <th scope='col' style='text-align:left;border:1px solid #eee;padding:12px'> 
      Price 
      </th> 
      </tr> 
      </thead> 
      <tbody>"; 
      $data .= $order->email_order_items_table(false, true);    
      $data .= "</tbody><tfoot>"; 
      if ($totals = $order->get_order_item_totals()) { 
       $i = 0; 
       foreach ($totals as $total) { 
       $i++; 
       $label = $total['label']; 
       $value = $total['value']; 
       $data .= "<tr> 
       <th scope='row' colspan='2' style='text-align:left; border: 1px solid #eee;'>$label</th> 
       <td style='text-align:left; border: 1px solid #eee;'>$value</td> 
       </tr>"; 
       } 
      } 
      $data .= "</tfoot></table>"; 
     } 

     $data .=   
     "<span> 
     <h2 style='color:#557da1;display:block;font-family:&quot;Helvetica Neue&quot;,Helvetica,Roboto,Arial,sans-serif;font-size:18px;font-weight:bold;line-height:130%;margin:16px 0 8px;text-align:left'> 
     Customer details 
     </h2> 
     <p style='margin:0 0 16px'> 
     <strong>Email:</strong> 
     <a href='mailto:' target='_blank'> 
     $email 
     </a> 
     </p> 
     <p style='margin:0 0 16px'> 
     <strong>Tel:</strong> 
     $billing_phone 
     </p> 
     <table cellspacing='0' cellpadding='0' style='width:100%;vertical-align:top' border='0'> 
     <tbody> 
     <tr> 
     <td valign='top' width='50%' style='padding:12px'> 
     <h3 style='color:#557da1;display:block;font-family:&quot;Helvetica Neue&quot;,Helvetica,Roboto,Arial,sans-serif;font-size:16px;font-weight:bold;line-height:130%;margin:16px 0 8px;text-align:left'>Billing address</h3> 
     <p style='margin:0 0 16px'> $billing_address </p> 
     </td> 
     <td valign='top' width='50%' style='padding:12px'> 
     <h3 style='color:#557da1;display:block;font-family:&quot;Helvetica Neue&quot;,Helvetica,Roboto,Arial,sans-serif;font-size:16px;font-weight:bold;line-height:130%;margin:16px 0 8px;text-align:left'>Shipping address</h3> 
     <p style='margin:0 0 16px'> $shipping_address </p> 
     </td> 
     </tr> 
     </tbody> 
     </table> 
     </span> 
     </div> 
     </td> 
     </tr> 
     </tbody> 
     </table> 
     </td> 
     </tr> 
     </tbody> 
     </table>"; 

     $mailer = WC()->mailer(); 
     $subject = 'New Customer Order'; 
     $mailer->send('[email protected],[email protected]', $subject, $mailer->wrap_message($subject, $data), '', '');  
} 

Hy vọng nó sẽ phù hợp với bạn.

Cảm ơn

Các vấn đề liên quan