Vediamo come aggiungere campi personalizzati nel form di registrazione del plugin newsletter Wysija di WordPress.
Se usate WordPress avrete sicuramente sentito parlare del plugin Wysija, il più amato per gestire le newsletter. Purtroppo ad oggi il plugin non permette una personalizzazione completa e autonoma del form di registrazione. Per ovviare a questo spiacevole inconveniente vi invito a leggere questa trattazione.
Modifica e aggiunta dei campi
Per prima cosa modifichiamo gli array necessari al plugin per renderizzare e salvare i nuovi campi del form di registrazione. I file da aprire e modificare sono:
- wp-content/plugins/wysija-newsletter/models/user.php
- wp-content/plugins/wysija-newsletter/models/user-field.php
Inserite i nuovi campi in questo articolo aggiungeremo i campi indirizzo e provincia, ma potete sbizzarrirvi a seconda delle vostre esigenze.
Modifiche in user.php
riga 13 dopo “lastname”
//aggiungere 'indirizzo' => array(), 'provincia' => array(),
riga 21
var $searchable = array('email','firstname', 'lastname', 'provincia', 'indirizzo');
riga 149 sempre dopo lastname aggiungete
$provincia = $data->provincia; $indirizzo= $data->indirizzo;
riga 159
//aggiungete dentro l'array 'provincia'=>$provincia, 'indirizzo'=>$indirizzo,
Modifiche in user-field.php
Riga 21 aggiungete i due nuovi campi dentro l’array
$this->defaults=array("email"=>__("Email",WYSIJA),"firstname"=>__("First name",WYSIJA),"lastname"=>__("Last name",WYSIJA),"provincia"=>__("Provincia",WYSIJA),"indirizzo"=>__("Indirizzo",WYSIJA),"ip"=>__("IP address",WYSIJA),"status"=>__("Status",WYSIJA),"created_at"=>__("Subscription date",WYSIJA));
Bene a questo punto passate al paragrafo successivo dove andremo ad modificare il database per ospitare i nuovi campi.
Modifica del database
Per modificare il database agite come segue:
- Aprite con phpmyadmin la tabella wp_wysija_user_field
- Inserite due (o più a seconda di quanti campi volete aggiungere) nuovi valori nella tabella (mettete l’id progressivo mi raccomando!).
Nel nostro esempio specifico aggiungete:
- Valori da inserire #1 – name:Provincia – column_name: provincia – type 0 – values: NULL – default (vuoto) – is_required: 0 – error_message: Messaggio errore provincia
- Valori da inserire #2 – name:Indirizzo – column_name: indirizzo – type 0 – values: NULL – default (vuoto) – is_required: 0 – error_message: Messaggio errore indirizzo
Una volta salvati i nuovi valori aprite la tabella wp_wysija_user e modificatene la struttura aggiungendo le colonne “provincia” e “indirizzo”.
[symple_box color=”gray” text_align=”left” width=”100%” float=”none”]
NOTA – Le colonne devono essere VARCHAR(255).
[/symple_box]
Visualizzazione nuovi campi nel backend di WordPress
Ora è tutto pronto, nel widget di registrazione e nel backend dovreste già vedere che sono spuntati i nuovi campi personalizzati. Ora andiamo a far visualizzare i nuovi valori direttamente nella tabella elenco iscritti di Wysija.
Per modificare la tabella elenco iscritti del plugin apriamo il seguente file:
- wp-content/plugins/wysija-newsletter/views/back/subscribers.php
Dopo la riga 216 aggiunte quanto segue per specificare gli header della tabella:
$header.='<th class="manage-column column-fname'.$fnamesorting.'" id="provincia" scope="col" style="width:80px;">'.__('Provincia',WYSIJA).'</th> <th class="manage-column column-lname'.$lnamesorting.'" id="indirizzo" scope="col" style="width:80px;">'.__('Indirizzo',WYSIJA).'</th>';
Dopo la riga 285 aggiungete invece nel loop i contenuti reali degli iscritti:
<td><?php echo $row["provincia"] ?></td> <td><?php echo $row["indirizzo"] ?></td>
Mission completed!
Grazie a questo articolo avrete il completo controllo sui campi di registrazione del plugin Wysija e potrete targetizzare al meglio i vostri clienti/visitatori. Se questo articolo ti è stato utile condividilo sui social network o fammi sapere cosa ne pensi nei commenti!
Ciao, articolo veramente utile e ben fatto…però, mi viene da pensare: eseguire degli hack su un plugin comporta sempre un rovescio della medaglia, ovvero quello che poi al primo aggiornamento ( e questo plugin nello specifico viene aggiornato spesso), la modifica andrà persa con la sovrascrittura dei nuovi file. C’è un sistema per evitarlo?
Grazie in anticipo 🙂
Per fortuna nelle prossime realease di questo plugin verrà implementato un custom builder interno…fino ad allora questa che vedi è l’unica soluzione se hai bisogno di un form più strutturato per questo plugin 😉
Ciao, articolo molto utile. Stavo cercando un modo per aggiungere altri campi al form di registrazione di Wysija e questo articolo è stato indispensabile.
Ho solo un problema nel visualizzare i nuovi campi nel backend di WP. Ho creato le nuove colonne della tabella e le intestazioni ma quando provo a prelevare un dato es. non viene visualizzato niente.
Nel DB i dati vengono scritti correttamente, infatti se faccio un export della mia lista in formato CSV li vedo scritti. Il problema è relativo solo alla visualizzazione degli stessi nel backend.
Qualche suggerimento?
Grazie.
Ho risolto, puoi cancellare il mio commento se vuoi. Probabilmente nella nuova versione di Wysija avranno cambiato qualcosa. Comunque per risolvere va modificato anche il file wp-content/plugins/wysija-newsletter/controllers/back/subscribers.php aggiungendo i nuovi campi ai due array: $list_columns (intorno alla riga 6) e $searchable (riga seguente). Infine va modificato l’array $select (riga 151) aggiungendo i nuovi valori nella forma: [wysija]user.provincia’, ‘[wysija]user.indirizzo’, ecc ecc.
Spero che queste informazioni ti siano utili per aggiornare l’articolo.
Grazie ancora.
Grazie per il tuo contributo Andrea!
Ciao a tutti.
Questo Wysija mi sta veramente facendo impazzire. Ottimo componente, ma forse ancora da migliorare nella customizzazione…..
Come faccio ad accorciare la dimensione dei campi in cui inserisco NOME – E-MAIL ecc…?
Ho un tema con una spalla di un tot pixel. Quando attivo il widget Wysija subscription, i campi da riempire “sbordano” di qualche pixel la spalla destra.
Grazie a tutti
SE ho capito bene potresti risolvere dando un max-width:100%; via CSS agli input di testo 😉
Ciao,
Ottimo articolo e ben fatto!
Ho seguito passo passo e tutto mi sembra ok, non riesco solo a far comparire la colonna nel backend di WP.
Anche seguendo le indicazioni di Andrea.
Grazie,
Stefano
mi rendo conto che l’articolo è piuttosto vecchio, ma avrei un problema:
Sono riuscito a integrare il campo personalizzato senza problemi e riesco a memorizzare il valore direttamente dal form, ma poi nella schermata principale degli iscritti alla newsletter (nella scheda del dettaglio invece nessun problema, si vede e riesco anche a modificarlo), questo valore non appare, le ho provate tutte, anche a realizzare una mia query per “aggirare” il problema, ma niente non ne vuole sapere. Probabilmente aggiornando hanno modificato qualcosa che nell’articolo non è riportato e che invalida un pò tutta la procedura.