2016-06-24 13 views
6

Próbuję wysłać wiadomość e-mail z nowym zamówieniem oraz wiadomość e-mail z faktem klienta za pośrednictwem pliku functions.php.WooCommerce - Wyślij nowe zamówienie/fakturę klienta E-mail z pliku functions.php

Jak rozpalić kompletny przedmiot zamówienia, aby wysłać jako e-mail?

Próbuję dwa różne rodzaje kodu.

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

Nieco inne podejście, ale można spróbować rejestracji [Własne e-mail] (https://www.skyverge.com/blog/how-to-add-a-custom-woocommerce-email/) – helgatheviking

+0

Co masz na myśli przez "obiekt kompletnego zamówienia"? Podobnie jak "wersja var_dump" rzędu $? –

+0

Kiedy chcesz wyzwolić pocztę? np. kiedy użytkownik złożył zamówienie lub za pośrednictwem niestandardowego linku/akcji lub niestandardowego statusu zamówienia? –

Odpowiedz

3

Myślę, że potrzebujesz takiego kodu.

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), '', '');  
} 

Mam nadzieję, że będzie działać dla Ciebie.

Dzięki