Для успешной работы 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;
}
вот такие хитрости 🙂

