WooCommerce – Neue Bestellung / Kundenrechnungs-E-Mail aus der Datei functions.php senden

Lesezeit: 5 Minuten

Benutzer-Avatar
John Craig

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

  • 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

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:&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="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:&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 ), '', '' );     
}

Hoffentlich wird es für Sie funktionieren.

Vielen Dank

1370160cookie-checkWooCommerce – Neue Bestellung / Kundenrechnungs-E-Mail aus der Datei functions.php senden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy