Ich versuche, neue Bestell-E-Mails und Kundenrechnungs-E-Mails über die Datei functions.php zu senden.
Wie feuere ich ein vollständiges Bestellobjekt ab, um es als E-Mail zu senden?
Ich versuche zwei verschiedene Arten von Code.
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 );
}
Ich denke, Sie brauchen eine solche Art von Code.
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="https://stackoverflow.com/questions/38005916/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( '[email protected],[email protected]', $subject, $mailer->wrap_message( $subject, $data ), '', '' );
}
Hoffentlich wird es für Sie funktionieren.
Vielen Dank
Etwas anderer Ansatz, aber Sie könnten versuchen, sich zu registrieren benutzerdefinierte E-Mail
– Helgathewikinger
25. Juni 2016 um 17:38 Uhr
Was meinst du mit “kompletter Auftragsgegenstand”? Wie “var_dump-Version” von $order?
– Viesturs Knopkens
5. August 2016 um 18:32 Uhr
Wann möchten Sie eine Mail auslösen? wie wenn ein Benutzer eine Bestellung aufgegeben hat oder über einen benutzerdefinierten Link/eine benutzerdefinierte Aktion oder für den benutzerdefinierten Bestellstatus?
– Raunak Gupta
17. August 2016 um 14:20 Uhr