Changer le destinataire d’un formulaire Contact Form 7 à la volée

Selon le type de demande, nous pouvons vouloir modifier le destinataire d’un formulaire de contact réalisé avec Contact Form 7 sur WordPress. Pour cela, nous utilisons le hook wpcf7_before_send_mail, mais depuis les mises à jour aux alentours de la version 4.0 son usage a changé.

add_action("wpcf7_before_send_mail", "kodex_wpcf7_before_send_mail");
function kodex_wpcf7_before_send_mail($contact_form){
	// On récupère les propriétés du formulaire (réglages)
	$current_mail_array = $contact_form->prop('mail');

	// On récupère les données du formulaire posté
	$submission = WPCF7_Submission::get_instance();
	$posted_data = $submission->get_posted_data();
	if( $posted_data['sujet'] == "Question" ){
		$current_mail_array['recipient'] = "question@test.com";
	}else{
		$current_mail_array['recipient'] = "contact@test.com";
	}
	
	// On réattribue les nouvelles propriétés au formulaire
	$contact_form->set_properties(array('mail'=>$current_mail_array));
}