В настоящее время я сталкиваюсь с проблемой перезаписи содержимого тела the mail_2
в крючке wpcf7_before_send_mail
,
Я пытаюсь переписать шорткод wpcf7 для более правильного представления содержимого с некоторыми изменениями HTML.
Проблема в том, что я не могу переписать тело письма. После того, как я переписываю тело и печатаю результат, он снова становится телом по умолчанию. Когда я печатаю свою модификацию напрямую, я вижу изменения такими, какими я хочу их видеть.
Пример кода:
add_action("wpcf7_before_send_mail", "cf7_wpcf7_custom", 99, 1);
# Before sending email
function cf7_wpcf7_custom($properties, $contact_form_obj) {
$submission = WPCF7_Submission::get_instance();
$wpcf7 = WPCF7_ContactForm::get_current();
$wpcf7->mail_2['body'] = str_replace('[checkbox-1]', '..test..', $wpcf7->mail_2['body']);
// No changes appearing
var_dump($wpcf7->mail_2['body']);
exit;
}
wpcf7_before_send_mail
перехват выполняется до установки дополнительной почты. Так что будет перезаписано.
Мы можем изменить тело письма, используя фильтр wpcf7_additional_mail
,
Например:
add_filter('wpcf7_additional_mail', 'customize_mail_2', 10, 2);
function customize_mail_2($additional_mail, $contact_form) {
$submission = WPCF7_Submission::get_instance();
$wpcf7 = WPCF7_ContactForm::get_current();
$additional_mail['mail_2']['body'] = '..do your replacement stuff';
return $additional_mail;
}
Других решений пока нет …