Senden Sie die Woocommerce-Bestellung an die auf der Produktseite aufgeführte E-Mail-Adresse
Lesezeit: 3 Minuten
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
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…
Das Zusatzfeld auf dem Produkt (Feld ausfüllen und in den Warenkorb legen):
Dieses „E-Mail“-Feld auf der Bestelleingangsseite (Danke) nach der Kasse:
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]" :
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
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
9171700cookie-checkSenden Sie die Woocommerce-Bestellung an die auf der Produktseite aufgeführte E-Mail-Adresseyes
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