Скрыть пустые поля в электронном письме - контактная форма 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/
В зависимости от того, как вы настроили свою электронную почту, это может не сработать, поскольку при этом удаляются только пустые строки. Дайте мне знать, если это работает для вас, и если нет, пожалуйста, предоставьте код из вашего электронного письма, и пример отправленного электронного письма был бы также хорош.

Другие вопросы по тегам