Aggiungere variabile personalizzata nel corpo della mail di Contact Form 7

30 nov 2018, 12:25:49
Visualizzazioni: 14.2K
Voti: 3

Ho impostato un cookie per gli utenti per sapere da quale fonte provengono al sito e voglio che quando un utente ci contatta, il loro messaggio includa anche il cookie.

Quindi ho creato un nuovo shortcode e l'ho aggiunto nella sezione mail, ma invia direttamente lo shortcode invece del suo valore restituito

Codice :

function my_shortcode( $atts ) {
   return isset($_COOKIE['my_source']) ? $_COOKIE['my_source'] : '' ;
}
add_shortcode( 'my-source', 'my_shortcode' );

Corpo del messaggio in Contact Form 7 :

Nome : [your-name]
Email : [your-email]
Telefono : [form-tel]
Mia Fonte : [my-source]

Email Ricevuta :

Nome : Mohit Bumb
Email : abcde@gmail.com
Telefono : 19191919191
Mia Fonte : [my-source]
0
Tutte le risposte alla domanda 4
3

Dovresti farlo in questo modo:

add_action( 'wpcf7_init', 'custom_add_form_tag_my_source' );

function custom_add_form_tag_my_source() {
  // "my-source" è il tipo del form-tag
  wpcf7_add_form_tag( 'my-source', 'custom_my_source_form_tag_handler' );
}

function custom_my_source_form_tag_handler( $tag ) {
  return isset( $_COOKIE['my_source'] ) ? $_COOKIE['my_source'] : '';
}

Consulta la documentazione per maggiori dettagli.

Oppure puoi anche provare questo, per analizzare gli shortcode regolari:

add_filter( 'wpcf7_mail_components', function( $components ){
  $components['body'] = do_shortcode( $components['body'] );
  return $components;
} );
30 nov 2018 12:59:33
Commenti

non è quello che ha chiesto, ha chiesto perché il messaggio email non viene interpretato

lalo lalo
12 dic 2018 21:38:22

potrei aver dimenticato il filtro wpcf7_special_mail_tags, @lalo. Ma il codice nella mia risposta funziona - e se l'autore della domanda non avesse effettivamente accettato la risposta, probabilmente mi sarei ricordato del filtro wpcf7_special_mail_tags (quel giorno) e l'avrei aggiunto alla mia risposta.

Sally CJ Sally CJ
13 dic 2018 02:34:49

ho testato il tuo codice e permette di sostituire [my_source] solo quando il modulo viene visualizzato, come posso usare questo tag nel template dell'email ?

Sami Sami
2 apr 2020 01:05:49
0

Usa il filtro "wpcf7_special_mail_tags"

in questo esempio il mio tag è "tournaments"

/**
 * Un tag da utilizzare nella sezione "Mail" per consentire all'utente di ricevere il tag speciale
 * [tournaments]
 */
add_filter('wpcf7_special_mail_tags', 'wpcf7_tag_tournament', 10, 3);
function wpcf7_tag_tournament($output, $name, $html)
{
    $name = preg_replace('/^wpcf7\./', '_', $name); // per retrocompatibilità

    $submission = WPCF7_Submission::get_instance();

    if (! $submission) {
        return $output;
    }

    if ('tournaments' == $name) {
        return $submission->get_posted_data("tournaments");
    }

    return $output;
}
12 dic 2018 22:27:43
0

Sono in ritardo ma usa un tag speciale in questo scenario

// Hook per un tag speciale aggiuntivo nella mail
add_filter( 'wpcf7_special_mail_tags', 'wti_special_mail_tag', 20, 3 );
function wti_special_mail_tag( $output, $name, $html )
{
   $name = preg_replace( '/^wpcf7\./', '_', $name );
   if ( '_my_cookie' == $name ) {
       $output = isset( $_COOKIE['my_source'] ) ? $_COOKIE['my_source'] : '';
   }
   return $output;
}

puoi usare [_my_cookie] per chiamarne il valore

18 ago 2020 13:14:40
0

Ho risolto e pubblicato la mia risposta qui:

Aggiungere un Form-Tag personalizzato a Contact Form 7 in Wordpress

(che funziona anche per l'invio via email)

https://stackoverflow.com/questions/53754577/how-to-make-contact-form-7-custom-field/

Il codice

https://gist.github.com/eduardoarandah/83cad9227bc0ab13bf845ab14f2c4dad

13 dic 2018 05:26:27