Ente accreditato Regione Veneto n.4271

Come salvare i dati di un form di contatto con WordPress

creati dal plugin Contact Form 7

Pubblicato da Gianni Burei // 21 dicembre 2017 // 1.480 visualizzazioni

A chi lavora con WordPress sicuramente non è nuovo il nome Contact Form 7. Per chi non lo conoscesse, CF7 (abbreviazione spesso usata di questo plugin), è lo strumento più utilizzato per creare moduli di contatto nel sito. Questi moduli vengono compilati dall’utente direttamente nel sito e il risultato viene inviato via mail a un preciso account di posta.

È un plugin che gestisce la richiesta in tutte le sue fasi: dalla strutturazione del modulo di contatto, fino alla creazione e invio della mail con i dati compilati.

Le richieste di contatto, oggigiorno, risultano un requisito fondamentale di qualsiasi sito, anche per il più semplice, perché permettono un contatto diretto del cliente con l’azienda. Ormai è più veloce e distaccato compilare un form di contatto, piuttosto di chiamare direttamente l’azienda.

Le soluzioni su WordPress sono davvero tante, ma CF7 è il più conosciuto e usato. Il motivo è molteplice: è gratuito e semplice da configurare. Esistono alternative decisamente più potenti (vedi ad esempio Gravity Forms), ma che oltre ad avere un costo di acquisto, presentano una complessità di uso e configurazione maggiore.

Questo plugin si limita ad inviare solamente via email le richieste informazioni, senza salvarle prima da qualche parte. Il problema è che l’invio/ricezione d’email non è sempre una garanzia: spesso possono esserci problemi di server che portano alla perdita della mail. E questa non è una possibilità poi così remota, credetemi.

Dall’esperienza che ho, posso assicurarvi che psicologicamente, per il cliente, è più fastidioso non ricevere una richiesta di contatto, piuttosto che avere il sito down per qualche minuto/ora.

Sarebbe buona norma quindi, trovare un sistema per archiviare le richieste di contatto, indipendentemente che queste vengano effettivamente ricevute via email.

Per far questo esistono 2 soluzioni: la prima, più semplice e alla portata di tutti, fa uso di un plugin. La seconda invece richiede competenze di programmazione, ma vi slega da qualsiasi plugin aggiuntivo. Vediamole tutte e 2.

Flamingo

La prima soluzione che vi propongo (quella semplice e per tutti) è l’utilizzo del plugin Flamingo. Sviluppato dallo stesso team di CF7, permette di salvare i dati dei moduli di contatto inviati, indipendentemente se l’email arriva o no a destinazione.

Una volta installato e attivato il plugin, questo compare con un’omonima voce sul menu principale dell’area amministrativa, con all’interno 2 sotto menu:

Rubrica, che raccoglie tutte le email non solo di chi ha compilato un qualsiasi modulo di contatto, ma anche di chi ha lasciato un commento a un articolo

Messaggi in arrivo, dove sono presenti tutti i messaggi inviati dagli utenti, attraverso un form di contatto generato precedentemente con Contact Form 7.

In questa schermata avete la lista delle richieste fatte e cliccandoci sopra potete visualizzare i dettagli della richiesta, con i campi compilati e le informazioni aggiuntive (IP, pagina da cui è stata compilato il form, data, ecc..).

Flamingo, permette anche di esportare tutti questi dati sotto forma di CSV. Insomma, una soluzione rapida e semplice, che metterà al sicuro tutte le richieste informazioni del sito.

Il grosso vantaggio di questo plugin è che si integra automaticamente con CF7 e non richiede alcuna configurazione iniziale.

Tramite codice

La soluzione precedente è di sicuro la più veloce e non richiede particolari conoscenze. Lo svantaggio è che, essendo un plugin, non abbiamo il pieno controllo di che dati salvare, dove e come.

Se siete però dei programmatori e volete avere il pieno controllo, esiste una soluzione anche per voi. CF7 infatti mette a disposizione una serie di funzioni per poter gestire i dati compilati dall’utente, prima che questi vengano inviati via email. La documentazione di queste funzioni, sul sito ufficiale, è un pochino scarsa. Quindi cercherò di essere più chiaro possibile.

Premessa: questa procedura prevedere che conosciate il linguaggio PHP e sappiate già mettere mano al codice che sta sotto al cofano di WordPress. Se così non fosse vi consiglio di utilizzare il plugin sopra descritto (oppure date un occhio al nostro corso di PHP – WordPress Avanzato).

Il codice che vedete qui sopra, va messo nel file “functions.php” e permette di salvare i dati di un ipotetico modulo di richiesta info (con, ad esempio, ID 102) formato dai campi “nome”, “email”, “telefono” e “messaggio”.

Entrando nel dettaglio del codice:

  • A riga 2 aggiungo una nuova azione all’hook (gancio) “wpcf7_before_send_mail” che si occupa di eseguire comandi PRIMA d’inviare una mail.
  • A riga 5 e 6 richiamo la variabile globale $wpdb, addetta a comunicare tramite SQL con il Database di WordPress.
  • A riga 6 richiamo il modulo compilato e inviato dall’utente.
  • A riga 9 carico questi i dati del modulo in una specifica variabile ($posted_data)
  • A riga 11 verifico se effettivamente il modulo compilato è quello con ID “102” (l’id è visibile in area amministrativa sullo shortcode relativo). Potete anche creare una sequenza di “elseif” per gestire i dati provenienti da più moduli di contatto.
  • Tra riga 13 e 16, all’interno dell’IF recupero i singoli dati compilati dall’utente
  • Tra riga 18 a riga 24 creo e invio la chiamata SQL per inserire i dati del modulo in una tabella chiamata, in questo esempio, “richieste”

Che decidiate di utilizzare il plugin o di scrivere direttamente il codice, ora sapete come salvare i dati di tutti i form di richiesta del vostro sito, senza essere in balia del corretto funzionamento del servizio di posta del vostro hosting.

Topic: , ,

Send this to a friend