Ajouter des informations dans vos mails

Lors d’un récent projet, je devais customiser les mails WooCommerce au niveau des templates et des informations transmises au client. Dans ce premier articles on va s’intéresser à l’ajout de nouvelles infos qui s’ajouteront à la suite du récapitulatif des produits.

Pour effectuer cette simple tâche, WooCommerce à pensé à nous et nous offre toutes une panoplie de hook pour effectuer cette opération. Celui qui nous intéresse aujourd’hui se nome woocommerce_email_after_order_table

On va donc appelé ce hook de la manière suivante :

add_action( 'woocommerce_email_after_order_table', 'jhiki_get_variations_info', 1, 4);

function af_get_variations_info($order, $sent_to_admin, $plain_text, $email ) {

}

Ici j’appel donc le hook avec la fonction native wordpress add_action. Le premier paramètre correspond au nom du hook qu’on souhaite exécuter, le second celui de la fonction qui sera appelée pour effectuer notre traitement, le troisième paramètre définit la priorité d’exécution de l’appel du hook. Plus le chiffre est bas et plus tôt sera appelé notre hook. Le dernier paramètre va définir le nombre d’arguments que comprendra notre fonction.

add_action( 'woocommerce_email_after_order_table', 'jhiki_get_variations_info', 1, 4);

function jhiki_get_variations_info($order, $sent_to_admin, $plain_text, $email ) {
	
	$html ='<h2>Informations sur les cours</h2>';
	$html .='<div style="margin-bottom: 40px;">';
	$html .= '<table class="td" cellspacing="0" cellpadding="6" style="width: 100%; font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;" border="1">
		<thead>
			<tr>
				<th class="td" scope="col" style="text-align:left;">Produit</th>
				<th class="td" scope="col" style="text-align:left;">Détail</th>
			</tr>
		</thead>
		<tbody>';
	
	// Iterating through each "line" items in the order
	foreach ($order->get_items() as $item_id => $item_data) {

		// Get an instance of corresponding the WC_Product object
		$product = $item_data->get_product();
		$productid =  $product->get_id();
		//Attribute
		$detail	= get_post_meta($productid, '_variation_description', true);
	
		if($productid != 505) {
            $html .= '<tr>';
			$html .= '<td>'.$product->get_name().'</td>';
			$html .= '<td>'.(!empty($detail) ? $detail : '-').'</td>';
            $html .= '</tr>';
		}

	}
	$html .= '</tbody>';
	$html .= '</table>';
	$html .= '</div>';
	
	echo $html;
}

La suite est assez simple, dans notre exemple on souhaite ajouter des informations complémentaire sur les produits de type variations. Dans ce projet, le client vend des réservations de cours. J’ai ajouté aux variations plusieurs infos comme le niveau demandé, l’heure, le lieux du cours etc …

On va donc parcourir l’objet $order qui contient tous les produits de notre commande et récupérer les informations qui nous intéressent. Reste ensuite à les intégrer comme on le souhaite en utilisant du html classique et le tour est joué. Dans mon exemple, je prépare tout mon contenu dans une variable html que j’affiche ensuite.

Et voilà !