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

时间:2013-02-21 16:35:25

标签: wordpress email field contact-form contact-form-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个订单也会显示在电子邮件中。那么如何在电子邮件中隐藏这些不完整的字段?

请帮忙!

4 个答案:

答案 0 :(得分:1)

尝试使用以下过滤器,未在实际网站中进行测试,而我的本地网站不会发送电子邮件,因此我不确定。

由于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;
}

答案 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)

只需选中与消息正文字段下的文本“从输出中删除包含空白邮件标记的行”的复选框。