Senden Sie die Woocommerce-Bestellung an die auf der Produktseite aufgeführte E-Mail-Adresse

Lesezeit: 3 Minuten

Senden Sie die Woocommerce Bestellung an die auf der Produktseite aufgefuhrte
MacGyver_97

Ich verwende Woocommerce und das Product Addons-Plugin, um einem Produkt zusätzliche Felder hinzuzufügen. Eines dieser Felder ist eine E-Mail-Adresse, damit Personen die Bestellbestätigung an eine ANDERE Adresse als die auf der Checkout-Seite angegebene Rechnungsadresse senden können. E-Mails sollten an beide Adressen gesendet werden.

Irgendwelche Gedanken darüber, wie man die Datei functions.php ändern kann, um dies zu tun?

  • Da Sie viele Artikel für eine Bestellung haben können, sollte dieses zusätzliche E-Mail-Feld kein benutzerdefiniertes Produktfeld, sondern ein zusätzliches Checkout-Feld sein. Denken Sie es…

    – LoicTheAztec

    2. November 2017 um 7:16 Uhr

  • Es kann mehr als ein Produkt im Warenkorb geben, aber die E-Mail wird auf der Produktseite selbst als “erster Schritt” angefordert. Es wird davon ausgegangen, dass die Kaufbestätigung immer an die gleiche Adresse geht, diese kann sich aber von der Rechnungsadresse unterscheiden, weshalb sie auf der Produktseite erscheinen muss.

    – MacGyver_97

    2. November 2017 um 12:37 Uhr

Senden Sie die Woocommerce Bestellung an die auf der Produktseite aufgefuhrte
LoicTheAztec

In dem woocommerce_email_recipient_{$this->id} Filterhaken, den Sie verwenden können $order Argument, um Ihre 2. E-Mail zu erhalten.

Aber zuerst fügen wir global ein E-Mail-Feld mit dem Produkt-Add-ons-Plugin hinzu…

  1. Das Zusatzfeld auf dem Produkt (Feld ausfüllen und in den Warenkorb legen):

Geben Sie hier die Bildbeschreibung ein

  1. Dieses „E-Mail“-Feld auf der Bestelleingangsseite (Danke) nach der Kasse:

Geben Sie hier die Bildbeschreibung ein

Wie Sie sehen können, lautet die Bezeichnung dieses Felds „E-Mail“…

Wenn ich jetzt in die Datenbank schaue wp_woocommerce_order_itemmeta für diese Bestellung kann ich für die sehen meta_key "Email" der meta_value "[email protected]" :

Geben Sie hier die Bildbeschreibung ein

Jetzt kann ich das richtig einstellen meta_key in den Code unten, um meine E-Mail zu erhalten.

Hier ist der Code, der diesen zusätzlichen E-Mail-Empfänger zur Verarbeitung und E-Mail-Benachrichtigungen über abgeschlossene Kundenbestellungen hinzufügt:

add_filter( 'woocommerce_email_recipient_customer_completed_order', 'additional_customer_email_recipient', 10, 2 ); // Processing Order
add_filter( 'woocommerce_email_recipient_customer_processing_order', 'additional_customer_email_recipient', 10, 2 ); // Completed Order
function additional_customer_email_recipient( $recipient, $order ) {
    if ( ! is_a( $order, 'WC_Order' ) ) return $recipient;

    $additional_recipients = array(); // Initializing…

    // Iterating though each order item
    foreach( $order->get_items() as $item_id => $item_data ){
        // HERE set the the correct meta_key (like 'Email') to get the correct value
        $email = wc_get_order_item_meta( $item_id, 'Email', true );

        // Avoiding duplicates (if many items with many emails)
        // or an existing email in the recipient
        if( ! in_array( $email, $additional_recipients ) && strpos( $recipient, $email ) === false )
            $additional_recipients[] = $email;
    }

    // Convert the array in a coma separated string
    $additional_recipients = implode( ',', $additional_recipients);

    // If an additional recipient exist, we add it
    if( count($additional_recipients) > 0)
        $recipient .= ','.$additional_recipients;

    return $recipient;
}

Code geht in die function.php-Datei Ihres aktiven Child-Themes (oder Themes) oder auch in jede Plugin-Datei.

Getestet und funktioniert.

  • Vielen Dank! Ich werde versuchen, dies zu implementieren und werde richtig ankreuzen, wenn es bei mir funktioniert.

    – MacGyver_97

    2. November 2017 um 18:31 Uhr

  • Es klappt! Danke! Jetzt muss nur noch sichergestellt werden, dass der Kunde das will lol 🙂

    – MacGyver_97

    2. November 2017 um 20:53 Uhr

Sie können den folgenden Code in Ihre function.php einfügen

add_filter( 'woocommerce_email_recipient_customer_completed_order', 'your_email_recipient_filter_function', 10, 2);

function your_email_recipient_filter_function($recipient, $object) {
    $recipient = $recipient . ', [email protected]';
    return $recipient;
}

und wenn Sie E-Mails in BCC senden möchten, versuchen Sie es bitte mit dem folgenden Code:

add_filter( 'woocommerce_email_headers', 'mycustom_headers_filter_function', 10, 2);

function mycustom_headers_filter_function( $headers, $object ) {
    if ($object == 'customer_completed_order') {
        $headers .= 'BCC: My name <[email protected]>' . "\r\n";
    }

  • Vielen Dank, aber ich kann die E-Mail-Adresse nicht fest codieren. Es muss aus einem Feld stammen, das auf der Produktseite selbst erscheint. Es kann auch nicht von der Checkout-Seite (oder Rechnungsadresse) kommen. Ich glaube nicht, dass deine Lösung das tut …

    – MacGyver_97

    2. November 2017 um 12:33 Uhr

917170cookie-checkSenden Sie die Woocommerce-Bestellung an die auf der Produktseite aufgeführte E-Mail-Adresse

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

Privacy policy