在Wordpress中联系表单7 - 如何隐藏电子邮件中未完成的字段?

问题描述:

任何人都可以帮助我找到一种方法来隐藏发送的电子邮件中的字段吗?在Wordpress中联系表单7 - 如何隐藏电子邮件中未完成的字段?

基本上我有多行(如多个订单列表),如果用户只填写顶行,我不希望其他空行显示在电子邮件中。

这里是代码形式的部分(但也有其他8行即10号令):

<tr class="stationary-order-input"> 
     <td>[text order-1-page-number]</td> 
     <td>[text order-1-item-number]</td> 
     <td>[text order-1-item-description]</td> 
     <td>[text order-1-quantity]</td> 
    </tr> 
    <tr class="stationary-order-input"> 
     <td>[text order-2-page-number]</td> 
     <td>[text order-2-item-number]</td> 
     <td>[text order-2-item-description]</td> 
     <td>[text order-2-quantity]</td> 
    </tr> 

这里是我的电子邮件是如何设置(最高可达10阶)段:

ORDER 1 - Details: 

Page number: [page-number] 
Item number: [item-number] 
Item description: [item-description] 
Quantity: [quantity] 

ORDER 2 - Details: 

Page number: [order-2-page-number] 
Item number: [order-2-item-number] 
Item description: [order-2-item-description] 
Quantity: [order-2-quantity] 

目前,即使用户未完成所有10个订单,所有10个订单仍将以电子邮件显示。那么我怎样才能在电子邮件中隐藏这些不完整的字段呢?

请帮忙!

请尝试以下过滤器,没有在现场测试,我的本地站点不发送电子邮件,所以我不确定。

由于CF7具有一定的内在价值,我认为这是最好逐个检查每个字段,例如,your-addressyour-phone等:

add_filter('wpcf7_posted_data', 'cf7_so_15007502'); 

function cf7_so_15007502($posted_data) 
{ 
    if(isset($posted_data['your-address']) && '' == $posted_data['your-address']) 
     unset($posted_data['your-address']); 

    if(isset($posted_data['your-phone']) && '' == $posted_data['your-phone']) 
     unset($posted_data['your-phone']); 

    return $posted_data; 
} 
+0

谢谢@brasofilo,我会试试这个。那么这是否在functions.php中?特别是在哪里? – user1794295 2013-02-22 09:33:23

+1

@ user1794295,两个选项,一个自定义插件或'functions.php',请参见[我在哪里可以找到我在这里或其他地方找到的代码片段?](http://wordpress.stackexchange.com/q/ 72160/12615)和[哪里把我的代码:插件或functions.php?](http://wordpress.stackexchange.com/q/73031/12615) – brasofilo 2013-02-22 09:39:15

+0

谢谢,但我恐怕这不是很正确的我什么因为我希望在电子邮件中隐藏不必要的文本(即与未填写的表单字段有关的部分)。我想我可能不得不重新考虑电子邮件格式化的方式...... – user1794295 2013-02-22 13:31:04

在联系表7的邮件1场有一个检查框位于电子邮件字段的底部。它指定从输出中排除具有空白邮件标签的行,并在其上放置复选标记。然后保存表格

现在,当客户填写表格并且不填写某些字段时,它不会显示在您的电子邮件中。

这里有一个更动态的方法来从邮件中删除联系人表单7标签。

function on_wpcf7_mail_components($data, $form, $mail) 
{   
    foreach ((array) $form->form_scan_shortcode() as $shortcode) 
    { 
     if (empty($shortcode['name'])) 
     { 
      continue; 
     } 

     $tag = sprintf('[%s]', $shortcode['name']); 

     $data['body'] = str_replace($tag , '', $data['body']); 
    } 

    return $data; 
} 

add_filter('wpcf7_mail_components', 'on_wpcf7_mail_components', 10, 3); 

只需选中与邮件正文字段下的文本“排除空白邮件标签中的行”文本相对应的复选框即可。