Php WordPress联系人表单7如何分解日期表单

Php WordPress联系人表单7如何分解日期表单,php,wordpress,forms,contact-form,Php,Wordpress,Forms,Contact Form,我有这个: [日期*服务\u日期id:取货类别:字段1] 这是联系方式7,在电子邮件中显示如下: $pickup = explode("/",$_POST['SERVICE_DATE']); Service_Day: '.$pickup[0].' Service_Month: '.$pickup[1].' Service_Year: '.$pickup[2].' 取车日期:[服务日期]-年/月/日 …我收到这封

我有这个:

[日期*服务\u日期id:取货类别:字段1]

这是联系方式7,在电子邮件中显示如下:

        $pickup     = explode("/",$_POST['SERVICE_DATE']);

        Service_Day: '.$pickup[0].' 

        Service_Month: '.$pickup[1].' 

        Service_Year: '.$pickup[2].' 
取车日期:[服务日期]-年/月/日

…我收到这封电子邮件:

提取日期:2017-03-27-年/月/日

但当我在PHP/HTML网站上使用它时,我能够分解日期并通过分解获得每个日期,如下所示:

        $pickup     = explode("/",$_POST['SERVICE_DATE']);

        Service_Day: '.$pickup[0].' 

        Service_Month: '.$pickup[1].' 

        Service_Year: '.$pickup[2].' 

我怎样才能在WordPress中使用Contact Form 7以完全分解的方式完成这项工作?

您必须在Contact Form 7中使用预定义的钩子在发送之前修改数据。在发送邮件之前查看使用
钩子

以下是一个例子:

add_action( 'wpcf7_before_send_mail', 'wpcf7_modify_date' );

function wpcf7_modify_date($contact_form){

    // get current SUBMISSION instance
    $submission = WPCF7_Submission::get_instance();


    // Ok go forward
    if ($submission) {

        // get submission data
        $data = $submission->get_posted_data();

        // nothing's here... do nothing...
        if (empty($data))
            return;

        // get mail property
        $mail = $contact_form->prop( 'mail' ); // returns array with mail values

        /*
         * based on your current date display, you will explode by "-" rather than "/"
         * see: https://contactform7.com/date-field/ for information on how to change your date format
         *
         * NOTE: If you change your date format, you will have to change this function.
         */
        $exploded_date = explode("-", $data['SERVICE_DATE']);

        $year = $exploded_date[0];
        $month = $exploded_date[1];
        $day = $exploded_date[2];

        // Modify mail body
        $mail['body'] .= "Service_Day:" . $day . "\n";
        $mail['body'] .= "Service_Month:" . $month . "\n";
        $mail['body'] .= "Service_Year:" . $year . "\n";

        // set mail property with changed value(s)
        $contact_form->set_properties( array( 'mail' => $mail ) );

        return $contact_form;
    }
}
此函数将在发送电子邮件之前与提交的表单值挂钩,分解提交日期,然后按您的意愿显示。您应该从wp admin中的CF7电子邮件设置中删除
提取日期:[服务日期]-年/月/日
,因为这将自动将日期添加到电子邮件正文中

编辑:要将日期放在电子邮件开头,请执行以下操作:

// Assign the current mail body to a new variable
$mail_body = $mail['body'];

// Override the $mail['body'] with the new content
$mail['body'] = "Service_Day:" . $day . "\n";
$mail['body'] .= "Service_Month:" . $month . "\n";
$mail['body'] .= "Service_Year:" . $year . "\n";

// Append the original body below the new body
$mail['body'] .= $mail_body;

您的php代码将在wordpress上运行。只需在
中运行您的代码,谢谢您的快速回答,我知道您只需要将其粘贴到表单或电子邮件html部分?不,这不起作用。您需要使用提供的一个钩子钩住CF7。请看下面我的答案。非常感谢我将对其进行测试并给出反馈。如果此解决方案对您有效,请随意接受答案:)好的,泰贝利非常感谢,它工作得非常完美。。现在需要弄清楚如何使它显示在一个准确的位置。。因为在我的身体信息之后。。有什么想法吗?我已经编辑了我的答案,告诉你如何在邮件的开头而不是结尾包含它。不幸的是,没有办法把它定位在中间,除非你把你所有的内容写在代码> $mail ['Boo] ] />代码>变量中,而不是在WP管理中。