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]
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;
} );
J'ai résolu et posté ma réponse ici:
(cela fonctionne aussi pour être envoyé par email)
https://stackoverflow.com/questions/53754577/how-to-make-contact-form-7-custom-field/
https://Gist.github.com/eduardoarandah/83cad9227bc0ab13bf845ab14f2c4dad
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;
}