Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
联系Wordpress中的表格7-如何在电子邮件中隐藏未完成的字段?_Wordpress_Email_Field_Contact Form_Contact Form 7 - Fatal编程技术网

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

联系Wordpress中的表格7-如何在电子邮件中隐藏未完成的字段?,wordpress,email,field,contact-form,contact-form-7,Wordpress,Email,Field,Contact Form,Contact Form 7,有人能帮我找到一种方法来隐藏发送的电子邮件中的字段吗 基本上,我有多行(如多订单列表),如果用户只填写最上面的一行,我根本不希望其他空行显示在电子邮件中 以下是表单的代码部分(但还有8行,即10个订单): 目前,所有10个订单都将显示在电子邮件中,即使用户尚未完成所有订单。那么,如何在电子邮件中隐藏这些不完整的字段呢 请帮忙 试试下面的过滤器,它还没有在现场测试过,而且我的本地站点也不发送电子邮件,所以我不确定 由于CF7有一些内部值,我认为最好单独检查每个字段,例如,您的地址,您的手机,等等:

有人能帮我找到一种方法来隐藏发送的电子邮件中的字段吗

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

以下是表单的代码部分(但还有8行,即10个订单):

目前,所有10个订单都将显示在电子邮件中,即使用户尚未完成所有订单。那么,如何在电子邮件中隐藏这些不完整的字段呢


请帮忙

试试下面的过滤器,它还没有在现场测试过,而且我的本地站点也不发送电子邮件,所以我不确定

由于CF7有一些内部值,我认为最好单独检查每个字段,例如,
您的地址
您的手机
,等等:

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

在联系人表单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 );

只需在邮件正文字段下选中与文本“从输出中排除带有空白邮件标记的行”平行的复选框。

谢谢@brasofilo,我会试试这个。那么这是functions.php中的内容吗?特别是在哪里?@user1794295,两个选项,一个自定义插件或
functions.php
,请参阅并感谢,但我担心我所做的不太正确,因为我希望在电子邮件中隐藏不必要的文本(即与未填写的表单字段相关的部分)。我想我可能需要重新考虑一下电子邮件的格式。。。
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;
}
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 );