In Woocommerce muss ich E-Mail-Benachrichtigungen stoppen, die an den Kunden gesendet werden, wenn die Bestellung aufgegeben wird, außer wenn Payment_method BACS (Direct Bank Transfer) ist.
Ich habe Folgendes in der function.php-Datei meines aktiven Designs versucht:
add_filter( 'woocommerce_email_recipient_customer_on_hold_order_order', 'customer_order_email_if_bacs', 10, 2 );
function customer_order_email_if_bacs( $recipient, $order ) {
if( $order->payment_method() !== 'bacs' ) $recipient="";
return $recipient;
}
Aber es funktioniert nicht. Jede Hilfe ist willkommen.
Aktualisierung 2
Die woocommerce_email_recipient_{$email_id}
Filter ist ein zusammengesetzter Haken und die richtige E-Mail-ID, die darin festgelegt werden muss customer_on_hold_order
und nicht customer_on_hold_order_order
was nicht funktionieren wird…
Mit dem WC_Order
Objekt, seit Woocommerce 3, müssen Sie verwenden get_payment_method()
Methode.
So vermeiden Sie E-Mail-Benachrichtigungen für Kunden im Wartestatus außer für die Verwendung der Zahlungsmethode „Bacs“:
add_filter( 'woocommerce_email_recipient_customer_on_hold_order', 'customer_on_hold_order_for_bacs', 10, 2 );
function customer_on_hold_order_for_bacs( $recipient, $order ) {
if( is_a('WC_Order', $order) && $order->get_payment_method() !== 'bacs' ){
$recipient="";
}
return $recipient;
}
Der Code wird in die function.php-Datei Ihres aktiven untergeordneten Designs (aktives Design) eingefügt. Getestet und funktioniert.