2010-04-02 3 views
0

J'ai environ 6 sous-domaines qui ont un lien "contactez-nous" et j'envoie tous ces liens à un seul formulaire qui utilise "Formulaire de contact 7". J'ajoute? From = nom de site à chacun des liens afin que je puisse définir une variable $ referencedFrom dans le formulaire de contact. Les deux seules choses qui me manquent sont (1) la possibilité d'insérer cette variable calledFrom dans l'e-mail que je reçois chaque fois que quelqu'un soumet le formulaire et (2) La possibilité de rediriger l'utilisateur vers le site ils sont venus from (stocké dans $ referencedFrom)Pirater le code "Contact Form 7" pour ajouter un champ "Referred By"

Des idées?

est ici un peu de code à partir includes/classes.php que je pensais peut-être partie de l'insert de courrier électronique, mais sa ne fait pas beaucoup ...

function mail() { 
    global $referrer; 
    $refferedfrom = $referrer; //HERE IS MY CUSTOM CODE 
    $fes = $this->form_scan_shortcode(); 

    foreach ($fes as $fe) { 
     $name = $fe['name']; 
     $pipes = $fe['pipes']; 

     if (empty($name)) 
      continue; 

     $value = $_POST[$name]; 

     if (WPCF7_USE_PIPE && is_a($pipes, 'WPCF7_Pipes') && ! $pipes->zero()) { 
      if (is_array($value)) { 
       $new_value = array(); 
       foreach ($value as $v) { 
        $new_value[] = $pipes->do_pipe($v); 
       } 
       $value = $new_value; 
      } else { 
       $value = $pipes->do_pipe($value); 
      } 
     } 

     $this->posted_data[$name] = $value; 
     $this->posted_data[$refferedfrom] = $referrer; //HERE IS MY CUSTOM CODE 
    } 

Je pense aussi que je pourrais insérer la Code referredFrom quelque part dans cette fonction et ...

function compose_and_send_mail($mail_template) { 
    $regex = '/\[\s*([a-zA-Z][0-9a-zA-Z:._-]*)\s*\]/'; 
    $callback = array(&$this, 'mail_callback'); 

    $mail_subject = preg_replace_callback($regex, $callback, $mail_template['subject']); 
    $mail_sender = preg_replace_callback($regex, $callback, $mail_template['sender']); 
    $mail_body = preg_replace_callback($regex, $callback, $mail_template['body']); 
    $mail_recipient = preg_replace_callback($regex, $callback, $mail_template['recipient']); 

    $mail_headers = "From: $mail_sender\n"; 

    if ($mail_template['use_html']) 
     $mail_headers .= "Content-Type: text/html\n"; 

    $mail_additional_headers = preg_replace_callback($regex, $callback, 
     $mail_template['additional_headers']); 
    $mail_headers .= trim($mail_additional_headers) . "\n"; 

    if ($this->uploaded_files) { 
     $for_this_mail = array(); 
     foreach ($this->uploaded_files as $name => $path) { 
      if (false === strpos($mail_template['attachments'], "[${name}]")) 
       continue; 
      $for_this_mail[] = $path; 
     } 

     return @wp_mail($mail_recipient, $mail_subject, $mail_body, $mail_headers, 
      $for_this_mail); 
    } else { 
     return @wp_mail($mail_recipient, $mail_subject, $mail_body, $mail_headers); 
    } 
} 

Répondre

0

tout d'abord, afin d'obtenir la de variable que vous devez insérer

$referrer = $_GET['from'];

quelque part dans le script supérieur, au moins avant la dernière ligne que vous avez insérée. En outre, dans le deuxième script, vous devez ajouter la valeur à $ mail_body d'une façon ou d'une autre, mais comme je ne sais pas comment cette valeur est composée, je ne peux pas m'empêcher de faire ça. Le code de ce formulaire est-il disponible en ligne quelque part?

+0

http://wordpress.org/extend/plugins/contact-form-7/ –

0

Insérer dans votre functions.php ou créer un simple plugin ...

1.

function custom_wpcf7_special_mail_tag($output, $name ) { 
    if ('from' == $name) { 
     $referredFrom = (isset($_GET["from"]) && !empty($_GET["from"])) ? $_GET["from"] : ''; 
     $output = $referredFrom; 
    } 

    return $output; 
} 
add_filter('wpcf7_special_mail_tags', 'custom_wpcf7_special_mail_tag', 10, 2); 

Utilisez la balise [from] dans votre modèle de courrier électronique.

2.

function add_custom_js_cf7() { 
    $referredFrom = (isset($_GET["from"]) && !empty($_GET["from"])) ? $_GET["from"] : ''; 
    if ($referredFrom) { 
    ?> 
     <script type="text/javascript"> 
     var from = "<?php echo $referredFrom; ?>"; 
     </script> 
<?php } 
} 
add_action('wpcf7_enqueue_scripts', 'add_custom_js_cf7'); 

Et ajoutez cette ligne aux "paramètres supplémentaires" dans les paramètres de formulaire:

on_sent_ok: "location = from;" 

http://contactform7.com/blog/2010/03/27/redirecting-to-another-url-after-submissions/


Vous pouvez également utiliser global $referredFrom; si vous l'avez déclaré moi

Questions connexes