Come eseguire uno script lato server quando Contact Form 7 viene inviato?

20 ago 2013, 07:02:05
Visualizzazioni: 21.9K
Voti: 5

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?

1
Commenti

Definisci "script lato server"? Stai parlando di PHP che può essere eseguito in un contesto WordPress? Uno script bash/Perl/altro? Cosa? E cosa deve fare lo script?

s_ha_dum s_ha_dum
20 ago 2013 07:51:16
Tutte le risposte alla domanda 1
6

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.

20 ago 2013 07:55:37
Commenti

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?

Atasha Atasha
20 ago 2013 15:58:33

@drifter per favore controlla la risposta aggiornata.

SachinGutte SachinGutte
20 ago 2013 18:39:27

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

zok zok
17 ago 2017 12:36:42

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

SachinGutte SachinGutte
17 ago 2017 13:07:42

on_sent_ok è deprecato e non più disponibile

kanlukasz kanlukasz
18 mag 2020 20:24:08

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

rAthus rAthus
17 dic 2020 12:18:57
Mostra i restanti 1 commenti