web-dev-qa-db-fra.com

Ajouter une variable personnalisée dans le corps du message du formulaire de contact 7

Je mets en place un cookie pour que mes utilisateurs sachent de quelle source ils viennent sur le site et je souhaite que, lorsque les utilisateurs nous contactent, leur message est également fourni avec leur cookie.

Donc, j'ai créé un nouveau shortcode et ajouté dans la section mail mais il envoie un shortcode direct et non sa valeur retournée

Code:

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

Corps du message dans le formulaire de contact 7:

Name : [your-name]
Email : [your-email]
Phone : [form-tel]
My Source : [my-source]

Email que j'ai reçu:

Name : Mohit Bumb
Email : [email protected]
Phone : 19191919191
My Source : [my-source]
1
Mohit Bumb

Vous devriez le faire comme ça:

add_action( 'wpcf7_init', 'custom_add_form_tag_my_source' );

function custom_add_form_tag_my_source() {
  // "my-source" is the type of the 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'] : '';
}

Voir le documentation pour plus de détails.

Ou vous pouvez également essayer ceci, pour analyser des codes courts classiques:

add_filter( 'wpcf7_mail_components', function( $components ){
  $components['body'] = do_shortcode( $components['body'] );
  return $components;
} );
1
Sally CJ

J'ai résolu et posté ma réponse ici:

Ajouter une étiquette de formulaire personnalisée au formulaire de contact 7 dans Wordpress

(cela fonctionne aussi pour être envoyé par email)

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

Le code

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

0
lalo

Utilisez le filtre "wpcf7_special_mail_tags"

dans cet exemple, mon tag est "tournois"

/**
 * A tag to be used in "Mail" section so the user receives the special tag
 * [tournaments]
 */
add_filter('wpcf7_special_mail_tags', 'wpcf7_tag_tournament', 10, 3);
function wpcf7_tag_tournament($output, $name, $html)
{
    $name = preg_replace('/^wpcf7\./', '_', $name); // for back-compat

    $submission = WPCF7_Submission::get_instance();

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

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

    return $output;
}
0
lalo