Formatter tous les emails envoyés dans WordPress

Pour unifier tous les emails envoyés depuis un site WordPress, il faut utiliser plusieurs hooks parmi lesquels :  wp_mail_content_typewp_mail_fromwp_mail_from_name et wp_mail.

// on définit le type text/html pour tous les emails
add_filter("wp_mail_content_type", "cdx_mail_content_type");
function cdx_mail_content_type(){
	return "text/html";
}
// on définit le même from pour tous les emails
add_filter("wp_mail_from", "cdx_mail_from");
function cdx_mail_from(){
	return "noreply@domain.fr";
}
// on définit le même from name
add_filter('wp_mail_from_name', 'cdx_mail_from_name');
function cdx_mail_from_name($old) {
	return "Mon site WP";
}

A chaque appel de wp_mail, nous allons insérer le header et le footer HTML de manière à former un email complet.

// pour tous les emails envoyés depuis le site, on force le même header / footer
add_filter('wp_mail', 'cdx_wp_mail', 10, 1);
function cdx_wp_mail($data){
	$modified_data = $data;
	$_subject = $data['subject'];
	$modified_data['subject'] = "Mon site WP"." - ".$_subject;
	$_message  = cdx_mail_header($_subject);
	$_message .= $data['message'];
	$_message .= cdx_mail_footer();
	$modified_data['message'] = $_message;
	return $modified_data;
}

function cdx_mail_header($subject=''){
	$html = '<html>
		<head>
			<title>Mon site WP</title>
			<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		</head>
		<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">';
	return $html;
}

function cdx_mail_footer(){
	$html = '</body>
	</html>';
	return $html;
}