2017-03-28 1 views
0

J'ai ceci:WordPress Formulaire de contact 7 Comment faire exploser une forme de date

[date* SERVICE_DATE id:pickup class:field1]

Il est Formulaire de contact 7 et dans l'e-mail, il montre comme ceci:

Pick_up_Date: [SERVICE_DATE] - Year/Month/Day

. ..et je reçois cet email:

Pick_up_Date: 2017-03-27 - Year/Month/Day

Mais quand je l'avais sur un site PHP/HTML, j'ai pu faire exploser la date et obtenir chaque jour par exploser, comme ceci:

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

     Service_Day: '.$pickup[0].' 

     Service_Month: '.$pickup[1].' 

     Service_Year: '.$pickup[2].' 

Comment puis-je faire ce travail exactement qui explosent façon dans WordPress avec le formulaire de contact 7?

+0

Votre code php sera le travail sur wordpress. Il suffit de lancer votre code dans '' –

+0

merci pour la réponse rapide, je vois juste besoin de coller cela sur le formulaire, ou dans la section html email? – lobensen

+0

Non, cela ne fonctionnera pas. Vous devrez vous brancher sur CF7 en utilisant l'un des crochets fournis. Voir ma réponse ci-dessous. –

Répondre

0

Vous devrez utiliser un crochet prédéfini dans le formulaire de contact 7 pour modifier les données avant l'envoi. Regardez dans l'utilisation du crochet before_send_mail.

Voici un exemple:

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

Cette fonction crochet dans les valeurs de forme présentées avant l'e-mail est envoyé, éclatez la date indiquée et l'afficher comme vous le souhaitez. Vous devez supprimer Pick_up_Date: [SERVICE_DATE] - Year/Month/Day de vos paramètres de courrier électronique CF7 dans wp-admin car cela ajoutera automatiquement la date au corps du message.

EDIT: Pour placer la date au début de l'e-mail, faites ceci:

// 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; 
+0

Merci beaucoup je vais le tester et donner feedbakc – lobensen

+0

Si cette solution a fonctionné pour vous n'hésitez pas à accepter la réponse :) –

+0

ok Ty Bailey merci beaucoup pour cela, son fonctionnement parfaitement .. maintenant besoin de comprendre comment le faire montrer dans une position exacte .. parce que montre après tout mon message de corps .. des idées? – lobensen