任何人都可以帮我找到隐藏发送电子邮件中字段的方法吗?
基本上我有多行(如多个订单列表),如果用户只填写顶行,我不希望其他空行显示在电子邮件中。
以下是表单的一段代码(但还有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个订单也会显示在电子邮件中。那么如何在电子邮件中隐藏这些不完整的字段?
请帮忙!
答案 0 :(得分:1)
尝试使用以下过滤器,未在实际网站中进行测试,而我的本地网站不会发送电子邮件,因此我不确定。
由于CF7有一些内部值,我认为最好分别检查每个字段,例如your-address
,your-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;
}
答案 1 :(得分:1)
在联系表单7的邮件1字段中,电子邮件字段底部有一个复选框。它声明从输出中删除带有空白邮件标签的行,并在其上放置一个复选标记。然后保存表格
现在,当客户填写表单并且不填写某些字段时,它将不会显示在您的电子邮件中。
答案 2 :(得分:0)
这是一种从邮件中删除Contact Form 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 );
答案 3 :(得分:0)
只需选中与消息正文字段下的文本“从输出中删除包含空白邮件标记的行”的复选框。