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