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管理中。