• Resolved harmelingvb

    (@harmelingvb)


    Liebes Forum, liebes Support-Team,

    für einen Online-Shop mit ausschließlich personalisierten Artikeln wäre eine zusätzliche E-Mail an den Kunden bei der Änderung des Order-Status von ‘In Wartestellung’ zu ‘In Bearbeitung’ wünschenswert. Der Ablauf wäre folgender:

    – Bestellung wird ausgelöst (E-Mail-Bestätigung wird gesendet und fordert die nötigen Informationen für die Personalisierung per Link an (Bilder, Texte, etc.)). Der Versand erfolgt außerhalb des Shopsystems.
    Wenn alle Details für ein Produktion geklärt sind, möchte ich den Status auf ‘ In Bearbeitung’ setzen und dabei eine Information an den Kunden senden, dass die Bestellung produziert wird. Prinzipiell funktioniert das mit dieser Änderung in der functions.php:

    add_action( 'woocommerce_email', 'my_child_setup_email_notification', 10, 1 );
    
    function my_child_setup_email_notification( $mailer ) {
        $mails = $mailer->get_emails();
        if ( isset( $mails['WC_Email_Customer_On_Hold_Order'] ) ) {
            add_action( 'woocommerce_order_status_on-hold_to_processing_notification', array( $mails['WC_GZD_Email_Customer_Paid_For_Order'], 'trigger' ), 30 );
        }
    }

    Da die Einstellmöglichkeiten in der E-Mail “Paid for Order” sehr begrenzt sind, möchte ich gerne die unter Germanized nicht gebrauchte “On Hold Order”-E-Mail senden. Da ich erst wenige Tage mit Woocommerce und Germanized arbeite, fehlt mir hier tatsächlich das Wissen, um dieses umzusetzen. Auch eine andere gut zu bearbeitende E-Mail wäre mir recht.

    Ich freue mich über eine Lösung. Vielen Dank.

Viewing 6 replies - 1 through 6 (of 6 total)
  • Plugin Author vendidero

    (@vendidero)

    Hi,

    die On-Hold-Mail kannst du natürlich auch einfach triggern. Aktuell prüfst du zwar ob die Mail existiert oder nicht (isset( $mails['WC_Email_Customer_On_Hold_Order'] )) aber verendest sie dann trotzdem nicht. Du müsstest also eigentlich folgendes Snippet verwenden:

    add_action( 'woocommerce_email', 'my_child_setup_email_notification', 150, 1 );
    
    function my_child_setup_email_notification( $mailer ) {
        $mails = $mailer->get_emails();
        if ( isset( $mails['WC_Email_Customer_On_Hold_Order'] ) ) {
            add_action( 'woocommerce_order_status_on-hold_to_processing_notification', array( $mails['WC_Email_Customer_On_Hold_Order'], 'trigger' ), 30 );
        }
    }

    Zudem müsstest du noch folgendes Snippet integrieren, damit Germanized den Versand der On-Hold-Mail erlaubt:

    add_filter( 'woocommerce_gzd_disable_on_hold_email', '__return_true' );

    Per Default verhindert Germanized den Versand explizit, damit die Bestellbestätigung (Customer Processing Order) als einzige verschickt wird.

    Grüße

    Thread Starter harmelingvb

    (@harmelingvb)

    Hallo,

    ganz herzlichen Dank für die schnelle Antwort. Da war ich ja schon ziemlich nah dran. Das ich die E-Mail nicht verwende, hatte ich schon bemerkt. Es funktionierte allerdings nicht und mit der Bezeichnung war ich mir nicht sicher.

    Das zusätzliche Snippet habe ich ebenfalls in die functions.php aufgenommen (richtig?). Allerdings wird die on-hold-E-Mail trotzdem nicht versendet. Ich verwende Kadence WooCommerce Email Designer. Dort ist ein Testversand problemlos möglich.

    Gibt es noch einen Tipp, der hier weiterhilft? Vielen Dank.

    Plugin Author vendidero

    (@vendidero)

    Hi,

    sorry, mein Snippet war leider falsch. Es müsste natürlich:

    add_filter( 'woocommerce_gzd_disable_on_hold_email', '__return_false' );

    lauten. Dann sollte es nun wirklich funktionieren (ja, alles sollte in die functions.php des Child-Themes).

    Grüße

    Thread Starter harmelingvb

    (@harmelingvb)

    Hallo nochmal,

    mein Projekt steht wohl unter einem schlechten Stern und klemmt tatsächlich an dieser einen E-Mail. 🙁

    Nachdem das erste Snippet nicht funktionierte, habe ich die Variante mit __return_false auch schon ausprobiert. Leider wird auch damit keine E-Mail versendet.

    Als Template nutze ich storefront. Zwischenzeitlich habe ich auch schon mal alle unnötigen Plugins deaktiviert – leider ohne Erfolg.

    Wenn es automatisch nicht machbar ist, kann ich diese E-Mail auch notfalls manuell versenden. Dafür wäre es schön, wenn sie im Backend im Bereich ‘send order email’ erscheinen würde. Gibt es dafür einen praktikablen Weg?

    Nochmals vielen Dank für die schnelle Hilfe und die Ideen.

    Plugin Author vendidero

    (@vendidero)

    Hi,

    im Zweifel müsstest du dir wohl Hilfe von einem Webentwickler hinzuziehen, der das ordentlich debugged und herausfindet, warum die Mail nicht versendet wird. Du solltest z.B. mal folgendes implementieren:

    add_action( 'woocommerce_email', 'my_child_setup_email_notification', 150, 1 );
    
    function my_child_setup_email_notification( $mailer ) {
    	$mails = $mailer->get_emails();
    
    	if ( isset( $mails['WC_Email_Customer_On_Hold_Order'] ) ) {
    		add_action( 'woocommerce_order_status_on-hold_to_processing_notification', 'my_child_notification_trigger', 30 );
    	}
    }
    
    add_filter( 'woocommerce_gzd_disable_on_hold_email', '__return_false' );
    
    function my_child_notification_trigger( $order_id ) {
    	$mailer = WC()->mailer();
    	$mails  = $mailer->get_emails();
    
    	if ( isset( $mails['WC_Email_Customer_On_Hold_Order'] ) ) {
    		$mails['WC_Email_Customer_On_Hold_Order']->trigger( $order_id );
    	}
    
    	var_dump($order_id);
    	var_dump( 'triggered' );
    	wp_die();
    }

    Das habe ich eben erfolgreich getestet, d.h. die On-Hold-Mail wurde bei mir korrekt versendet, sobald ich den Status von “in Wartestellung” auf “in Bearbeitung” gesetzt habe (im Admin-Bereich bei einer Testbestellung). Das Snippet beendet das PHP-Script nach dem Mail-Versand automatisch – den Part müsstest du dann natürlich nach dem Debugging wieder entfernen.

    Grüße

    Thread Starter harmelingvb

    (@harmelingvb)

    Hallo und DANKE, DANKE, DANKE!

    Das ist DIE Lösung, es funktioniert problemlos.

    Nochmals ganz herzlichen Dank für die schnelle und kompetente Hilfe. Als Anfänger ist man bei diesen Dingen echt aufgeschmissen und sieht dann den Wald vor lauter Bäumen nicht mehr. Allein für den ersten Einstieg habe ich 3 Abende aufmerksam gegoogelt und endlose Threads gelesen.
    Ich denke, dass diese Lösung auch für viele andere interessant ist. Beim Suchen bin ich auf viele Anfragen gestoßen, aber eine so elegante Lösung gab es dort nicht.

    Nochmals herzlichen Dank und viele Grüße!

Viewing 6 replies - 1 through 6 (of 6 total)

The topic ‘Order Status / zusätzliche E-Mail’ is closed to new replies.