Come eseguire uno script lato server quando Contact Form 7 viene inviato?
Sono nuovo su WordPress e sto cercando di creare un semplice modulo. Attualmente sto utilizzando Contact Form 7 e finora lo trovo molto pratico. Ora però sto cercando di eseguire del codice lato server quando il modulo viene inviato. In sostanza, quello che voglio è ottenere le variabili POST dal modulo quando viene inviato, in modo da poter utilizzare i dati del form nello script. Desidero mantenere la funzionalità di invio email che invia all'indirizzo email quando il modulo viene inviato.
Esiste un modo semplice e più efficiente per farlo senza dover modificare nulla nel codice?

Hai bisogno dell'hook wpcf7_before_send_mail
che viene attivato dopo l'invio con successo dell'email.
Aggiungi questo codice nel tuo file functions.php
.
add_action( 'wpcf7_before_send_mail', 'process_contact_form_data' );
function process_contact_form_data( $contact_data ){
var_dump($contact_data->posted_data);
$name = $contact_data->posted_data["your-name"];
$email = $contact_data->posted_data["your-email"];
echo $name ;
echo $email;
}
Puoi accedere ai campi tramite il loro nome nell'array $contact_data->posted_data
.
Sì. Puoi reindirizzare a un'altra pagina sia con JavaScript che dalla funzione sopra. Con JavaScript devi aggiungere la seguente riga nelle Impostazioni Aggiuntive del modulo di contatto che hai creato.
on_sent_ok: "location = 'http://youdomain.com/thankyou.php';"
Ma questo non ti permetterà di utilizzare i valori inviati dal modulo. Quindi opta per il metodo alternativo.
Reindirizza alla pagina thankyou dalla funzione menzionata sopra. Ma prima di reindirizzare, imposta le informazioni che vuoi mostrare nella pagina thankyou nelle variabili di SESSION (come nome, email, oggetto dal modulo). Poi nella pagina thankyou, recupera quei valori e visualizzali. Successivamente puoi distruggere le variabili di sessione e controllare ogni volta se quelle determinate variabili sono impostate. Questo ti darà il controllo sull'accesso diretto all'url thankyou dal browser e mostrerà un messaggio appropriato dicendo che la pagina non è accessibile direttamente.

Grazie per la tua risposta @Phobos. È possibile che, una volta inviato il modulo, venga reindirizzati a una pagina di ringraziamento dove posso utilizzare le variabili post del modulo appena inviato da Contact 7?

questo non funziona. Oltre a non reindirizzare, l'utente non riceve alcun feedback dall'invio del modulo (nonostante l'e-mail venga inviata) e rimane bloccato con un'animazione di caricamento infinita. A proposito, gli autori sconsigliano ufficialmente l'uso dell'hook on_sent_ok
(che in realtà funziona) e forniscono una soluzione che purtroppo non funziona

Essendo passato molto tempo, l'autore potrebbe aver modificato le API e gli hook.

NON FUNZIONA PIÙ, i dati ora devono essere elaborati utilizzando $submission = WPCF7_Submission::get_instance();
e $posted_data = $submission->get_posted_data();
come indicato in questa risposta
