Contact Form 7 - Eseguire codice DOPO l'invio della mail

30 lug 2015, 16:38:54
Visualizzazioni: 72.2K
Voti: 9

Ho capito come fare qualcosa PRIMA dell'invio della mail, ma ho anche bisogno che un'azione avvenga DOPO che è stata inviata.

Ho provato wpcf7_after_send_mail ma senza successo...

Qualsiasi aiuto sulla questione sarebbe molto apprezzato.

4
Commenti

Non puoi utilizzare le impostazioni aggiuntive nelle impostazioni del plugin del modulo di contatto? - http://contactform7.com/additional-settings/

Andy Andy
30 lug 2015 16:51:08

Stavo proprio leggendo a riguardo mentre cerco su Google, ma non so dove si trovino queste impostazioni. Questo permette di reindirizzare un modulo specifico? Ho bisogno che solo 1 modulo specifico venga reindirizzato, non tutti i moduli.

Menno van der Krift Menno van der Krift
30 lug 2015 16:58:56

Forse potresti applicare questo tipo di approccio ?

birgire birgire
30 lug 2015 17:00:03

Ahh l'ho appena trovato e funziona perfettamente :D Il mio Wordpress è in olandese, per questo non riuscivo a trovare facilmente i Campi Aggiuntivi xD

Menno van der Krift Menno van der Krift
30 lug 2015 17:05:33
Tutte le risposte alla domanda 3
5
17

Per chiunque atterri qui cercando un modo per eseguire del codice PHP dopo l'invio dell'email, Contact Form 7 offre un hook wpcf7_mail_sent proprio per questo scopo. L'utilizzo è simile a questo:

// ...nel file functions.php
add_action('wpcf7_mail_sent', function ($cf7) {
    // Esegui codice dopo l'invio dell'email
});

Esiste anche wpcf7_mail_failed, che permette di intervenire quando l'invio dell'email fallisce.

5 gen 2017 16:10:19
Commenti

Non ha funzionato per me.

Pons Pons
1 mar 2017 18:31:30

Quale versione di CF7 stai usando? Io l'ho fatto funzionare con la versione 4.6.1 e WordPress 4.7.2

adamtomat adamtomat
2 mar 2017 11:02:36

Penso di aver trovato l'errore nel mio codice: avevo racchiuso la mia chiamata add_action con un controllo has_action. Ma probabilmente quando il mio codice (all'interno di un plugin) viene eseguito, l'azione wpcf7_mail_sent non esiste ancora. Rimuovere il controllo has_action ha fatto funzionare tutto.

Pons Pons
3 mar 2017 11:24:31

Cos'è questo parametro ($cf7)? Ne ho bisogno?

Kevin.a Kevin.a
15 mar 2017 12:48:48

È un'istanza di WPCF7_ContactForm, che contiene una serie di informazioni sul modulo che è stato inviato.

Ad esempio, potresti ottenere l'id del modulo con $cf7->id(). Potresti non averne bisogno, nel qual caso puoi ometterlo finché non sorge la necessità.

Ecco un link alla classe su GitHub nel caso volessi dare un'occhiata a cosa fa: https://github.com/wp-plugins/contact-form-7/blob/master/includes/contact-form.php

adamtomat adamtomat
16 mar 2017 11:05:08
3

MODIFICA:

Si prega di notare che a partire dal 2017 'on_sent_ok' è deprecato. Ciò significa che il tuo codice smetterà di funzionare in un momento futuro (probabilmente entro la fine del 2017). La soluzione consigliata è utilizzare direttamente i listener di eventi DOM. Ad esempio, se hai usato:

on_sent_ok: "ga( 'send', 'event', 'Contact Form', 'submit' );"

Dovresti sostituirlo con:

document.addEventListener( 'wpcf7mailsent', function( event ) {
    ga( 'send', 'event', 'Contact Form', 'submit' );
}, false );

Il codice JavaScript può essere posizionato ad esempio nel footer della tua pagina.

RISPOSTA ORIGINALE:

Ok ho capito come fare. Nelle impostazioni specifiche del modulo, vai alla scheda campi aggiuntivi. Digita quanto segue: on_sent_ok: "location.replace('http://www.website-redirect.com');"

Funziona perfettamente per me ora. Spero che questo aiuti anche altri sviluppatori in futuro.

descrizione immagine qui

So che l'immagine è in olandese... ma non puoi sbagliare con le grandi linee rosse attorno al nome della scheda.

30 lug 2015 17:07:04
Commenti

come salviamo un cookie utilizzando la scheda Addizionale? Ho provato questo on_submit: "ooid = document.getElementById('customer_orderid').value;document.cookie = 'myorderiiid='+ooid+'; expires=Thu, 18 Dec 2025 12:00:00 UTC; path=/';"; ma nessun cookie viene salvato.. PERCHÉ?

Mostafa Mostafa
13 apr 2017 09:29:53

Nota che questa era una domanda di DUE ANNI fa...

Menno van der Krift Menno van der Krift
30 ott 2017 12:12:33

Scusa, all'epoca non avevo abbastanza reputazione per aggiungerlo come commento, quindi l'unico modo per includere queste informazioni era attraverso la modifica.

Amade Amade
23 feb 2018 13:15:40
0

L'uso di on_sent_ok come spiegato su contactform7.com/additional-settings può essere molto utile per aggiungere del semplice JavaScript come reindirizzare a un'altra pagina.

Tuttavia, è piuttosto soggetto a fallimenti a causa di conflitti JavaScript con il tuo tema WordPress attuale o con uno degli altri plugin che stai utilizzando.

on_sent_ok è l'ultima cosa che viene eseguita in Contact Form 7, quindi qualsiasi conflitto JavaScript interferente può impedirne il completamento.

Come alternativa, Contact Form 7 ha un gran numero di hook elencati su http://hookr.io/plugins/contact-form-7/. Questi possono fornire una soluzione più mirata e robusta.

1 ago 2015 08:42:36