Contact Form 7 - шлем письма от email-а отправителя


Для успешной работы CRM системы по сбору лидов понадобилось, что бы отправитель был со своим емейлом, а не дефолтным "no-replay@..." от самой формы. Нашлось вот такое решение:

add_action( 'wpcf7_before_send_mail', 'mail_to_crm' ); 
function mail_to_crm( $cf ) {
	$form_id = $cf->id;
	$submission = WPCF7_Submission::get_instance();
	if ($submission) $posted_data = $submission->get_posted_data();
	
	if ( $form_id == '385' ) {
		$mail = $cf->prop( 'mail' );
		$mail['subject'] = "Test Subject";
		$mail['sender'] = "Test Name <".$posted_data["your-email"].">";
		$cf->set_properties( array( 'mail' => $mail ) );		
	}
}

Обратите внимание, что я привязываюсь к конкретной форме по ID.

Так же возник второй конфликт функций - у меня были переназначены емейл и отправитель с дефольных вордпресса и они перебивали эти данные. Пришлось тоже подшаманить с этим функционалом:

add_filter('wp_mail_from', 'new_mail_from');
add_filter('wp_mail_from_name', 'new_mail_from_name');
 
function new_mail_from($old) {
	$mail = "wordpress@".$_SERVER['HTTP_HOST'];
	if($old === $mail)
		return 'sales@site.com';
	else
		return $old;
}
function new_mail_from_name($old) {
    if($old === "WordPress")
        return 'Site.ru MAIL';
    else
        return $old;
}

вот такие хитрости 🙂

ПОЛЕЗНО  Получить все зарегистрированные функции для фильтра the_content