Скрыть пустые поля в электронном письме - контактная форма 7
Я провел почти весь день в поисках ответа, но ничего не помогло..
Я сделал большую форму с Контактной формой 7, но части формы будут скрыты, зависит от вашего выбора. Например, если вы выберете "2 человека", появятся две части.
Но если я заполню поля для одного человека (поэтому другие поля будут пустыми и скрытыми), поля будут видны в электронном письме. Я хочу видеть только заполненные поля в письме.
Извините, если я немного неясен. Не могли бы помочь, пожалуйста.
4 ответа
Решено!
Я сам нашел решение, которое уже было в контактной форме 7. Поля в электронном письме не были в одной строке, поэтому, когда я установил флажок "Исключить строки с пустыми почтовыми тегами из вывода", ничего не произошло. Я поместил все это в одну строку, и теперь это работает.
На самом деле вам нужно реализовать свой собственный компонент тела электронной почты с помощью,
add_filter('wpcf7_mail_components','my_custom_mail', 10,2);
function my_custom_mail($mail_component, $contact_form){
$mail_component['subject']; //email subject
$mail_component['sender']; //sender field (from)
$mail_component['body']; //email body
$mail_component['recipient']; //email recipient (to)
$mail_component['additional_headers']; //email headers, cc:, bcc:, reply-to:
$mail_component['attachments']; //file attachments if any
$key_values = array();
$tags = $contact_form->scan_form_tags(); //get your form tags
foreach($tags as $tag){
$field_name = $tag['name'];
if(isset($_POST[$field_name]) && !empty($_POST[$field_name])){
//get all the submitted fields form your form
$key_values[$field_name] = $_POST[$field_name];
}
}
//you have all the submitted field-name => value pairs in the array $key_values
//you can now reset you email body
$body = "Dear ".$key_values['your-name'].',';
...
$mail_component['body'] = $body;
return $mail_component;
}
Для этого вы можете использовать бесплатный подключаемый модуль «Условные поля для контактной формы 7» от Jules Colle.
С его помощью вы можете создавать группы информации. Затем вы создаете флажок и в настройках выбираете, какая группа будет отображаться при ее выборе.
Попробуйте добавить это в ваш файл functions.php:
add_filter( 'wpcf7_mail_components', 'remove_blank_lines' );
function remove_blank_lines( $mail ) {
if ( is_array( $mail ) && ! empty( $mail['body'] ) )
$mail['body'] = preg_replace( '|\n\s*\n|', "\n\n", $mail['body'] );
return $mail;
}
Я нашел здесь фрагмент: https://wordpress.org/support/topic/plugin-contact-form-7-how-to-do-away-with-blank-lines-in-email-for-unfilled-form-items/
В зависимости от того, как вы настроили свою электронную почту, это может не сработать, поскольку при этом удаляются только пустые строки. Дайте мне знать, если это работает для вас, и если нет, пожалуйста, предоставьте код из вашего электронного письма, и пример отправленного электронного письма был бы также хорош.