我正在尝试通过functions.php文件发送新订单电子邮件和客户发票电子邮件。
如何触发完整订单对象作为电子邮件发送?
我正在尝试两种不同类型的代码。
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( 'example@gmail.com', $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 :(得分:3)
我认为你需要这种类型的代码。
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:"Helvetica Neue",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:"Helvetica Neue",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:"Helvetica Neue",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:"Helvetica Neue",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:"Helvetica Neue",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( 'abc@example.com,def@example.com', $subject, $mailer->wrap_message( $subject, $data ), '', '' );
}
希望它对你有用。
由于