【问题标题】:Hide empty fields in email - Contact Form 7隐藏电子邮件中的空白字段 - 联系表格 7
【发布时间】:2017-06-23 16:23:04
【问题描述】:

我几乎一整天都在寻找答案,但没有任何帮助..

我使用联系表格 7 制作了一个大表格,但表格的某些部分会隐藏,这取决于您的选择。例如,如果您选择“2 人”,则会显示两个部分。

但是,如果我为一个人填写字段(因此其他字段为空且隐藏),这些字段将在电子邮件中可见。我只想查看电子邮件中已填写的字段。

如果我有点不清楚,我很抱歉。请帮帮忙。

【问题讨论】:

    标签: wordpress email contact-form-7


    【解决方案1】:

    解决了!

    我自己找到了一个解决方案,它已经在联系表 7 中。电子邮件中的字段不在同一行,所以当我检查“从输出中排除带有空白邮件标签的行”时,什么也没发生.我已经把它们都放在了同一行,现在它可以工作了。

    【讨论】:

      【解决方案2】:

      其实你需要实现自己的自定义邮件正文组件,

          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 中。电子邮件中的字段不在同一行,所以当我检查“从输出中排除带有空白邮件标签的行”时,什么也没发生。我已经把它们都放在了同一行,现在它可以工作了。
      • 好的,很高兴您找到了解决方案,您介意将其作为单独的解决方案发布,以便我们大家分享知识:)
      【解决方案3】:

      尝试将其添加到您的 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;
      }
      

      我在这里找到了 sn-p:https://wordpress.org/support/topic/plugin-contact-form-7-how-to-do-away-with-blank-lines-in-email-for-unfilled-form-items/
      根据您设置电子邮件的方式,这可能不起作用,因为这只会删除空行。让我知道这是否适合您,如果不适合,请提供您电子邮件正文中的代码,发送的示例电子邮件也很好。

      【讨论】:

      • 今天也看到了这段代码,但是没有用。它使页面甚至无法看到(不知道用英语怎么说,希望你能理解)。我检查了该函数是否已存在于我的代码中,但事实并非如此。
      猜你喜欢
      • 2019-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-29
      • 1970-01-01
      • 2013-02-07
      相关资源
      最近更新 更多