Adăugare variabilă personalizată în corpul mailului Contact Form 7

30 nov. 2018, 12:25:49
Vizualizări: 14.2K
Voturi: 3

Am setat un cookie pentru utilizatorii mei pentru a ști de la ce sursă vin pe site și vreau ca atunci când un utilizator ne contactează, mesajul să includă și cookie-ul său.

Am creat un nou shortcode și l-am adăugat în secțiunea de mail, dar trimite direct shortcode-ul, nu valoarea returnată.

Codul :

function my_shortcode( $atts ) {
   // Returnează valoarea cookie-ului 'my_source' dacă există, altfel string gol
   return isset($_COOKIE['my_source']) ? $_COOKIE['my_source'] : '' ;
}
add_shortcode( 'my-source', 'my_shortcode' );

Corpul mesajului în Contact Form 7 :

Nume : [your-name]
Email : [your-email]
Telefon : [form-tel]
Sursa mea : [my-source]

Emailul primit :

Nume : Mohit Bumb
Email : abcde@gmail.com
Telefon : 19191919191
Sursa mea : [my-source]
0
Toate răspunsurile la întrebare 4
3

Ar trebui să procedați astfel:

add_action( 'wpcf7_init', 'custom_add_form_tag_my_source' );

function custom_add_form_tag_my_source() {
  // "my-source" este tipul tag-ului de formular
  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ți documentația pentru mai multe detalii.

Sau puteți încerca și această variantă, pentru a analiza shortcode-urile obișnuite:

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

nu asta a întrebat el, a întrebat de ce nu este analizat mesajul de email

lalo lalo
12 dec. 2018 21:38:22

poate am uitat de filtrul wpcf7_special_mail_tags, @lalo. Dar codul din răspunsul meu funcționează - iar dacă autorul întrebării nu ar fi acceptat răspunsul, probabil mi-aș fi amintit de filtrul wpcf7_special_mail_tags (în ziua respectivă) și l-aș fi adăugat în răspunsul meu.

Sally CJ Sally CJ
13 dec. 2018 02:34:49

am testat codul tău și permite înlocuirea [my_source] doar când formularul este afișat, cum pot folosi acest tag în șablonul de email?

Sami Sami
2 apr. 2020 01:05:49
0

Folosește filtrul "wpcf7_special_mail_tags"

în acest exemplu, eticheta mea este "tournaments"

/**
 * O etichetă de folosit în secțiunea "Mail" pentru ca utilizatorul să primească eticheta specială
 * [tournaments]
 */
add_filter('wpcf7_special_mail_tags', 'wpcf7_tag_tournament', 10, 3);
function wpcf7_tag_tournament($output, $name, $html)
{
    $name = preg_replace('/^wpcf7\./', '_', $name); // pentru compatibilitate inversă

    $submission = WPCF7_Submission::get_instance();

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

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

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

Am întârziat, dar folosește un tag special în acest scenariu

// Hook pentru un tag de mail special suplimentar
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;
}

poți folosi [_my_cookie] pentru a apela valoarea sa

18 aug. 2020 13:14:40
0

Am rezolvat și am postat răspunsul meu aici:

Adăugarea unei etichete personalizate de formular în Contact Form 7 pentru WordPress

(care funcționează și pentru trimiterea prin email)

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

Codul

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

13 dec. 2018 05:26:27