Tekst in WooCommerce e-mails afhankelijk van shipping of afhaal

Na een bestelling kan een koper verschillende type e-mails ontvangen.
In de meeste gevallen worden 2 mails geactiveerd:

  • de bedanktmail (Processing Order)
  • de afsluitmail (Completed Order)

Als kopers gekozen hebben voor afhaal is het interessant om een aparte tekst te kunnen tonen, zeker bij Completed Order.
Je zou dan eigenlijk 2 mogelijkheden moeten hebben van tekst:

  • Bestelling is verstuurd (bij levering aan huis)
  • Bestelling ligt klaar voor afhaal (bij afhaal)

In combinatie met de plugin “Kadence WooCommerce Email Designer” kan je de belangrijkste styling en hoofdteksten al aanpassen.

De specifieke tekst-aanpassingen per verzendingsoptie kan niet via de plugin, dat moet helaas in code gebeuren.

Met onderstaande code kan je al een aparte hoofding en mailonderwerp doorgeven als je koper heeft gekozen voor afhaal.

 add_filter( woocommerce_email_heading_customer_completed_order", 'custom_email_heading', 10, 2 );
function custom_email_heading( $email_heading, $order ) {
    if ( $order->has_shipping_method('local_pickup') ){
        $email_heading = '<h1>Uw bestelling ligt klaar voor afhaal</h1>';
    }
    return $email_heading;
}


add_filter( "woocommerce_email_subject_customer_completed_order", 'custom_email_subject', 10, 2 );
function custom_email_subject( $email_subject, $order ) {
	 if ( $order->has_shipping_method('local_pickup') ){
			 $email_subject = 'Uw bestelling ligt klaar!';
	 }
	 return $email_subject;
}

Volgende code is betreft de body tekst, zowel voor afhaal als voor deze case ‘per product‘ shipping optie.

add_action( 'woocommerce_email_order_details', 'custom_email_description', 10, 4 );
function custom_email_description( $order, $sent_to_admin, $plain_text, $email ) {
    if ( ($email->id == 'customer_completed_order')&&($order->has_shipping_method('local_pickup')) ) {
        echo 'U kan uw bestelling #' . $order->get_order_number() . ' komen afhalen op het adres: xxxxxxxx 118, Antwerpen.<br/>Onze openingsuren: dinsdag tot zaterdag van 10:00 - 16:00.';
    }

if ( ($email->id == 'customer_completed_order')&&($order->has_shipping_method('per_product')) ) { echo '<strong>Uw bestelling #' . $order->get_order_number() . ' is zonet verzonden.</strong><br/>U ontvangt van ons een verzendbevestiging per e-mail (inclusief Track&Trace).';
		}
}


Over de auteur: Dave Loodts

Full-time creatieve maker van doelgerichte websites en webshops sinds 2006 en gek van WordPress en WooCommerce. Actief lid in WordPress Community sinds 2014. Mijn grootste voldoening: ondernemers die succesvol aan de slag gaan met m'n WooCommerce tips.

Volg me op: