Я работаю над сайтом с несколькими формами, созданными с использованием Contact Form 7. Для одной из этих форм я передаю переменные, которые я собрал, используя скрытое поле ввода в форме. Я передаю эти переменные в электронное письмо с помощью wpcf7_before_send_mail, но эти значения передаются в каждое электронное письмо (я добавил динамические переменные, а также статический текст) Вот код:
add_action( 'wpcf7_before_send_mail', 'wpcf7_add_text_to_mail_body' ); function wpcf7_add_text_to_mail_body($contact_form){ $values_list = $_POST['valsitems']; $values_str = implode(", ", $values_list); // get mail property $mail = $contact_form->prop( 'mail' ); // returns array // add content to email body $mail['body'] .= 'INDUSTRIES SELECTED'; $mail['body'] .= $values_list; // set mail property with changed value(s) $contact_form->set_properties( array( 'mail' => $mail ) ); }
Я пытаюсь понять, как передавать эти значения только в один из шаблонов электронной почты формы контакта, возможно, через идентификатор формы.
Контактная форма 7 использует скрытый тип ввода для хранения идентификатора формы. Он использует имя скрытого поля _wpcf7 . Вы можете получить форму Id таким образом.
$form_id = $contact_form->posted_data['_wpcf7'];
Таким образом, вы должны
add_action( 'wpcf7_before_send_mail', 'wpcf7_add_text_to_mail_body' ); function wpcf7_add_text_to_mail_body($contact_form){ $form_id = $contact_form->posted_data['_wpcf7']; if ($form_id == 123): // 123 => Your Form ID. $values_list = $_POST['valsitems']; $values_str = implode(", ", $values_list); // get mail property $mail = $contact_form->prop( 'mail' ); // returns array // add content to email body $mail['body'] .= 'INDUSTRIES SELECTED'; $mail['body'] .= $values_list; // set mail property with changed value(s) $contact_form->set_properties( array( 'mail' => $mail ) ); endif; }
Надеюсь это поможет.