Wordpress覆盖联系表单mail_2正文

时间:2015-03-04 15:01:15

标签: php wordpress hook contact-form-7

目前,我在覆盖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}}

2 个答案:

答案 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 ) );

}