Senden Sie eine E-Mail zur Bestellung in der Warteschleife für eine bestimmte Versandmethode in Woocommerce

Lesezeit: 3 Minuten

Benutzer-Avatar
Hamsa Ahmad

Ich verwende WordPress 4.9.6 und WooCommerce Version 3.4.3 und muss für eine bestimmte Versandart eine E-Mail mit der Aufschrift „Bestellung zurückgestellt“ senden.

Grund? Ich verwende das DHL-Versand-Plugin, um den Versand zu berechnen, und eine alternative Versandmethode ist ebenfalls verfügbar. Wählt der Nutzer beim Checkout den DHL-Versand aus, werden die Versandkosten berechnet und die Bestellung ist startklar. Wenn sie sich jedoch für die Versandmethode „Alternative“ entscheiden, muss ich ihnen mitteilen, dass ihre Bestellung zurückgestellt wird, bis sie den Versand bezahlen, da die „Alternative“ Methode in „Kostenloser Versand“ umbenannt wurde und ich ihnen eine separate Rechnung ausstellen werde zahlen für den Versand, sobald sie bestellt haben.

Auf der Suche nach einer Lösung für mein Problem habe ich in diesem Antwort-Thread einen Code gefunden, der meinen Anforderungen entspricht: Anpassen der Woocommerce-E-Mail-Benachrichtigung für neue Bestellungen basierend auf der Versandmethode

Aber ich kann nicht herausfinden, wie ich diesen Code bearbeiten kann, damit er für mein spezifisches Szenario funktioniert.

Ihre Hilfe wird gerne in Anspruch genommen.

  • Bitte, wenn Sie Code von StackOverFlow verwenden, sollten Sie immer die verlinkte Quelle erwähnen und sie nicht in Ihre Frage aufnehmen, wenn Sie keine Änderung daran vorgenommen haben.

    – LoicTheAztec

    24. Juni 2018 um 9:03 Uhr


  • @LoicTheAztec Sicher, werde das im Hinterkopf behalten. Vielen Dank

    – Hamza Ahmad

    24. Juni 2018 um 9:27 Uhr


Benutzer-Avatar
LoicTheAztec

Damit es für eine umbenannte kostenlose Versandmethode funktioniert, müssen Sie den Code ein wenig ändern:

add_action ('woocommerce_email_order_details', 'custom_email_notification_for_shipping', 5, 4);
function custom_email_notification_for_shipping( $order, $sent_to_admin, $plain_text, $email ){

    // Only for "On hold" email notification and "Free Shipping" Shipping Method
    if ( 'customer_on_hold_order' == $email->id && $order->has_shipping_method('free_shipping') ){
        $order_id = $order->get_id(); // The Order ID

        // Your message output
        echo "<h2>Shipping notice</h2>
        <p>Your custom message goes here… your custom message goes here… your custom message goes here… your custom message goes here… your custom message goes here…</p>";
    }
}

Der Code wird in die function.php-Datei Ihres aktiven untergeordneten Designs (oder aktiven Designs) eingefügt. Getestet und funktioniert.

Geben Sie hier die Bildbeschreibung ein


Erzwingen der E-Mail-Benachrichtigung „Angehalten“ und „Abgeschlossen“. (Optional)

Bei Änderung des Bestellstatus löst der unten stehende Code die E-Mail-Benachrichtigung „Zurückgestellt“ nur für Ihre umbenannte Versandart „Kostenloser Versand“ und die E-Mail-Benachrichtigung „Abgeschlossen“ aus.

add_action( 'woocommerce_order_status_changed', 'sending_on_hold_email_notification', 20, 4 );
function sending_on_hold_email_notification( $order_id, $old_status, $new_status, $order ){
    // Only  "On hold" order status and "Free Shipping" Shipping Method
    if ( $order->has_shipping_method('free_shipping') && $new_status == 'on-hold' ){
        // Getting all WC_emails objects
        $notifications = WC()->mailer()->get_emails();
        // Send "On hold" email notification
        $notifications['WC_Email_Customer_On_Hold_Order']->trigger( $order_id );
    } elseif ( ! $order->has_shipping_method('free_shipping') && $new_status == 'completed' ){
        // Getting all WC_emails objects
        $notifications = WC()->mailer()->get_emails();
        // Send "On hold" email notification
        $notifications['WC_Email_Customer_Completed_Order']->trigger( $order_id );
    }
}

Der Code wird in die function.php-Datei Ihres aktiven untergeordneten Designs (oder aktiven Designs) eingefügt. Getestet und funktioniert.

  • Danke für deine Antwort. Ich schätze es sehr. Also der erste Code, den Sie in Ihrer Antwort angegeben haben; Wird die E-Mail „Bestellung zurückgestellt“ automatisch gesendet, wenn der Kunde die „alternative“ Versandmethode ausgewählt hat? Anstelle der standardmäßigen WooCommerce-Bestell-E-Mail?

    – Hamza Ahmad

    24. Juni 2018 um 11:21 Uhr

  • Vielen Dank für Ihren Kommentar. Ich schätze Ihre Hilfe sehr. Ich möchte automatisch die „Warte“-E-Mail auslösen, wenn ein Kunde den kostenlosen Versand wählt, aber die normale E-Mail für die abgeschlossene Bestellung senden, wenn er DHL-Versand wählt. Könnten Sie bitte den Code so bearbeiten, dass er so funktioniert, wie ich es beschrieben habe? Danke noch einmal.

    – Hamza Ahmad

    25. Juni 2018 um 4:11 Uhr

  • Danke für eure Antworten und Hilfe. Ich habe Ihre Antwort als die richtige Antwort akzeptiert.

    – Hamza Ahmad

    25. Juni 2018 um 6:19 Uhr

1035780cookie-checkSenden Sie eine E-Mail zur Bestellung in der Warteschleife für eine bestimmte Versandmethode in Woocommerce

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

Privacy policy