目前,我在覆盖the mail_2
wpcf7_before_send_mail
中覆盖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;
}
的正文内容时遇到问题。
我正在尝试通过一些html修改将wpcf7短代码重写为更恰当的内容呈现。
问题是我无法覆盖邮件正文。在我重写主体并直接打印结果后,它似乎又作为默认主体返回。当我直接打印我的修改时,我会看到我想要的修改。
代码示例:
{{1}}
答案 0 :(得分:1)
在设置其他邮件之前执行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;
}
答案 1 :(得分:1)
我可以使用functions.php中的以下代码更改电子邮件1和2,并添加一些自行插入的代码:
add_action( 'wpcf7_before_send_mail', 'wpcf7_add_couponnr_to_mail_body' );
function wpcf7_add_couponnr_to_mail_body($contact_form){
// get mail property
$mail = $contact_form->prop( 'mail' ); // returns array with mail values
$mail2 = $contact_form->prop( 'mail_2' ); // returns array with mail values
$couponnr = ...some insert code...;
// add date (or other content) to email body
$mail['body'] = str_replace("%%%COUPONNR%%%", $couponnr, $mail['body']);
$mail2['body'] = str_replace("%%%COUPONNR%%%", $couponnr, $mail2['body']);
// set mail property with changed value(s)
$contact_form->set_properties( array( 'mail' => $mail ) );
$contact_form->set_properties( array( 'mail_2' => $mail2 ) );
}