2016-10-04 2 views
1

J'ai un site Web avec un formulaire 3, mais seulement deux de ces formulaires doivent entrer des informations dans la base de données Salesforce. Comment est-ce que je définis quelles formes devraient utiliser le crochet et qui doit le passer sans le traverser?Limiter le formulaire de contact 7 (Avant l'envoi) au formulaire spécifique

Suivez le code J'utilise:

add_action('wpcf7_before_send_mail', 'my_conversion'); 
    function my_conversion($contact_form) { 
    $title = $contact_form->title; 
    $submission = WPCF7_Submission::get_instance(); 

    if ($submission) { 
     $posted_data = $submission->get_posted_data(); 
    } 

     $email = $posted_data["your-email"]; 
     $name = $posted_data["your-name"]; 
     $last = $posted_data["your-lastname"]; 
     $phone = $posted_data["tel-71"]; 
     $description = $posted_data["your-message"]; 


     $post_items[] = 'oid=00D4000000xxxxx'; 
     $post_items[] = 'first_name=' . $name; 
     $post_items[] = 'last_name=' . $last; 
     $post_items[] = 'company='; 
     $post_items[] = 'email=' . $email; 
     $post_items[] = 'phone=' . $phone; 
     $post_items[] = 'description=' . $description; 
     $post_items[] = '00N4000000XXXX=' . "Shopping"; 
     $post_items[] = '00N4000000xxxxxx=' . "1"; 
     $post_items[] = 'external=1'; 
     $post_items[] = 'lead_source=Shopping'; 

    $post_string = implode ('&', $post_items); 

    $ch = curl_init('https://www.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8'); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_exec($ch); // Post to Salesforce 
    curl_close($ch); // close cURL resource 
} 

Merci pour votre aide.

+0

j'avais trouvé cette fonction: 'if ($ contact_form-> id == myform_id de $!) retour,' Mais je sais très peu de choses sur PHP. Où dois-je entrer cette ligne? Voulez-vous me aider? Merci encore. –

+0

J'ai fait comme ceci: 'add_action ('wpcf7_before_send_mail', 'my_conversion'); function ma_conversion ($ contact_form) { $ title = $ forme_de_contact-> titre; $ submission = WPCF7_Submission :: get_instance(); $ id = $ contact_form-> id(); \t \t if ($ id == 68) { $ submission-> skip_mail = true; } \t if ($ id == 65) { $ posted_data = $ submission-> get_posted_data(); } (...) ' Maintenant la forme de l'ID = 65 normalement enregistrée dans Salesforce. Mais l'ID = 68 n'envoie pas l'email, est verrouillé avec les champs remplis. Qu'est-ce que je fais mal? Quelqu'un a-t-il une idée? –

+0

Bonjour. J'ai une solution, je ne pense pas que ce soit la meilleure mais voici ce que j'ai fait: J'ai utilisé la solution proposée par @takayukister. Dans le cas "$ contact_form-> title()". –

Répondre

0

Je suis une solution, je ne pense pas que c'est le meilleur, mais voici ce que je faisais:

add_action('wpcf7_before_send_mail', 'my_conversion'); 
     function my_conversion($contact_form) { 
     $title = $contact_form->title; 
     $submission = WPCF7_Submission::get_instance(); 

    if ($submission) { 
     $posted_data = $submission->get_posted_data(); 
    } 

    if ('FORM NAME' == $title) { 

      $email = $posted_data["your-email"]; 
      $name = $posted_data["your-name"]; 
      $last = $posted_data["your-lastname"]; 
      $phone = $posted_data["tel-71"]; 
      $description = $posted_data["your-message"]; 


      $post_items[] = 'oid=00D4000000xxxxx'; 
      $post_items[] = 'first_name=' . $name; 
      $post_items[] = 'last_name=' . $last; 
      $post_items[] = 'company='; 
      $post_items[] = 'email=' . $email; 
      $post_items[] = 'phone=' . $phone; 
      $post_items[] = 'description=' . $description; 
      $post_items[] = '00N4000000XXXX=' . "Shopping"; 
      $post_items[] = '00N4000000xxxxxx=' . "1"; 
      $post_items[] = 'external=1'; 
      $post_items[] = 'lead_source=Shopping'; 

     $post_string = implode ('&', $post_items); 

     $ch = curl_init('https://www.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8'); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); 
     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_exec($ch); // Post to Salesforce 
     curl_close($ch); // close cURL resource 
} 

J'ai utilisé la solution proposée par @takayukister. Dans le cas "$ contact_form-> title()". N'oubliez pas de changer "FORM NAME" avec le nom du formulaire que vous souhaitez effectuer l'action.

Merci @takayukister!