web-dev-qa-db-fra.com

Comment se connecter au formulaire de contact 7 avant l'envoi

Je suis en train d'écrire avec un plugin et je souhaite interagir avec le formulaire de contact 7 . Dans mon plugin, j'ai ajouté l'action suivante add_action

add_action("wpcf7_before_send_mail", "wpcf7_do_something_else");

function wpcf7_do_something_else(&$wpcf7_data) {

    // Here is the variable where the data are stored!
    var_dump($wpcf7_data);

    // If you want to skip mailing the data, you can do it...
    $wpcf7_data->skip_mail = true;

}

J'ai soumis le formulaire de contact mais l'add_action que j'ai eu n'a rien fait . Je ne sais pas comment faire pour que mon plugin intercepte ou fasse quelque chose lorsque le formulaire de contact 7 Tout, aide sur comment faire cela?

11
Naterade

Je devais le faire pour empêcher l'envoi de courrier électronique. J'espère que ça aide.

/*
    Prevent the email sending step for specific form
*/
add_action("wpcf7_before_send_mail", "wpcf7_do_something_else");  
function wpcf7_do_something_else($cf7) {
    // get the contact form object
    $wpcf = WPCF7_ContactForm::get_current();

    // if you wanna check the ID of the Form $wpcf->id

    if (/*Perform check here*/) {
        // If you want to skip mailing the data, you can do it...  
        $wpcf->skip_mail = true;    
    }

    return $wpcf;
}

Ce code suppose que vous exécutez la dernière version de CF7, votre code ci-dessus fonctionnait jusqu’à il ya quelques mois, quand ils sont allés refacturer le code.

19
Musk

J'aimerais ajouter que vous pouvez simplement utiliser le filtre wpcf7_skip_mail:

add_filter( 'wpcf7_skip_mail', 'maybe_skip_mail' );

function maybe_skip_mail( $skip_mail, $contact_form ) {

    if( /* your condition */ )
        $skip_mail = true;

    return $skip_mail;

}, 10, 2 );
9
d79

Vous pouvez activer le mode démo dans des paramètres supplémentaires, ce qui empêchera l'envoi d'emails. Voir ci-dessous des documents CF7.

Si vous définissez demo_mode: on dans le champ Paramètres supplémentaires, le contact formulaire sera en mode démo. Dans ce mode, le formulaire de contact sera ignorez le processus d'envoi de courrier et affichez simplement «terminé avec succès "comme un message de réponse.

1
Dan Canetti