✅ Notizie, temi, plugin WEB e WordPress. Qui condividiamo suggerimenti e le migliori soluzioni per siti web.

Crea contenuto a livello di codice dalle voci di Gravity Forms

13

Questo post ti guiderà su come creare qualsiasi tipo di contenuto (utenti, post o qualcos’altro personalizzato) in base alle voci in un modulo Gravity Forms. Aggiungeremo un’area nella schermata dei dettagli della voce in admin per creare contenuti in base alle informazioni inviate.

Cosa faremo

Creeremo una nuova metabox nella schermata dei dettagli di immissione di Gravity Form. In questo metabox aggiungeremo un pulsante. L’idea è che l’utente finale possa rivedere la voce e se approva i dettagli della voce, può premere il pulsante per avviare la creazione del contenuto.

Crea contenuto a livello di codice dalle voci di Gravity Forms

Il nostro codice verrà attivato facendo clic su questo pulsante, eseguire l’azione necessaria e, facoltativamente, presenteremo un messaggio del risultato all’utente finale. Aggiungeremo anche (facoltativamente) metadati alla voce in modo da poter verificare facilmente se il contenuto è stato creato prima o meno da questa voce.

Manterrò il codice abbastanza semplice e generale in modo che tu possa facilmente sostituirlo e modificarlo per adattarlo alle esigenze del tuo progetto. Nell’esempio seguente presumo che vogliamo creare programmaticamente un utente. Ma cosa fare con i dettagli dell’ingresso dipende interamente da te; puoi creare un post, aggiornare qualche altro contenuto o inviare un’e-mail personalizzata se lo desideri.

Identificazione dei campi

La prima considerazione che dobbiamo fare è come identificare i campi. In altre parole, dobbiamo sapere quale campo è cosa. Tieni presente che i valori di una voce in Gravity Forms sono riferiti ai relativi ID campo modulo. E anche con l’accesso alle informazioni di ogni campo del modulo, abbiamo bisogno di un modo sicuro per sapere quali campi sono quali informazioni. Un modulo potrebbe essere costituito da quattro input di testo: dobbiamo sapere quale dei quattro input di testo è per il nome.

Hai alcune alternative qui. È possibile codificare gli ID campo (ad es. determinare che l’ID campo 2 è il cognome), ma questo è molto soggetto a errori e non è raccomandato. Un modo semplice consiste nell’usare uno degli input di informazioni sui campi esistenti in Gravity Forms, ad esempio il nome della classe CSS. Ma tieni presente che l’utente finale può fornire più nomi di classe per ottenere lo stile desiderato e il tuo codice può facilmente interrompersi se non stai analizzando correttamente questa stringa. Il modo che consiglio vivamente è di aggiungere i tuoi input personalizzati ai campi:

Se desideri un metodo solido per identificare i campi per il tuo codice, dai un’occhiata a come nel post sopra. Ma per semplificare in questo post, userò la classe CSS e presumo che l’utente non inserisca nient’altro che i valori di cui abbiamo bisogno in quest’area.

Configurazione del modulo

Il primo passo è naturalmente impostare il modulo con i campi e i tipi di campo necessari. E quindi inserisci gli identificatori di campo nelle posizioni corrette. Ad esempio ho questo modulo:

Crea contenuto a livello di codice dalle voci di Gravity Forms

E per ogni campo che voglio includere, fornisco una classe CSS personalizzata che posso scegliere come target nel mio codice. Ad esempio per il nome;

Crea contenuto a livello di codice dalle voci di Gravity Forms

Passiamo ora al codice e a come creare una funzionalità che converta gli invii in contenuto personalizzato.

Aggiunta di una metabox nei dettagli della voce

Il primo passaggio consiste nell’aggiungere una sorta di trigger di azione per creare il nostro contenuto personalizzato. Un luogo naturale è nella schermata dei dettagli di immissione. Ciò consente all’utente finale di rivedere i valori inviati e quindi decidere se creare o meno contenuto da essi. Gravity Forms consente agli sviluppatori di creare facilmente metabox personalizzati in queste schermate.

Per creare una metabox personalizzata per inserire i dettagli possiamo utilizzare il filtro gform_entry_detail_meta_boxes. È un filtro che restituisce un array di tutti i metabox da mostrare nei dettagli della voce. Aggiungiamo semplicemente un nuovo elemento dell’array per creare un nuovo metabox e definiamo una funzione di callback per renderizzare il suo contenuto. Impostiamo un bel titolo descrittivo in ‘ title‘ e definiamo la sua posizione in modo da apparire nel ‘ side‘.

E poi dobbiamo definire la funzione di callback: awp_gf_create_user_metabox_render()nel nostro codice. Questa funzione è responsabile del rendering del contenuto del metabox. Come parametro di questa funzione otteniamo un array di argomenti, in cui possiamo recuperare il form e l’oggetto entry;

function awp_gf_create_user_metabox_render($args) { $form = $args['form']; // Form array. Here we find all the fields in $form['fields'] $entry = $args['entry']; // Entry array. Here we find all values in this current submission $render = ''; echo $render; }

Tutto ciò che dobbiamo fare in questa funzione è creare un po’ di HTML e farne eco.

Per quanto riguarda l’aggiunta di un pulsante per attivare un’azione, seguiremo lo stesso metodo di Gravity Forms stesso. C’è un elemento del modulo che avvolge l’intera schermata dei dettagli della voce e tutto ciò che dobbiamo fare è aggiungere un evento onclick su un pulsante di invio che cambierà la actionproprietà ‘ ‘. Definiamo il nostro nome di azione personalizzato, in modo da sapere quando è stato attivato e non è in conflitto con le azioni di Gravity Forms.

Chiamiamo la nostra azione personalizzata " awp_gf_create_user" e rendiamo un pulsante di invio con un evento onclick in questo modo:

Con il codice sopra otterremo una nuova metabox sul lato nella schermata dei dettagli di immissione, simile a questa:

Crea contenuto a livello di codice dalle voci di Gravity Forms

In questo momento non succede nulla quando si fa clic sul pulsante. Questo è solo perché non abbiamo ancora scritto alcun codice per ascoltarlo.

Estrarre valori dalla voce

Come accennato in precedenza, tutti i valori inviati nell’array di voci sono identificati dai rispettivi ID di campo.

Crea contenuto a livello di codice dalle voci di Gravity Forms

Nell’immagine sopra il campo ID 1 è per il nome, ID 2 è il cognome e così via. Ma aspetta: cosa sta succedendo con 5.1, 5.3 e così via? In Gravity Forms otteniamo "sub-ID" per campi speciali che accettano più valori. Ho aggiunto un campo indirizzo al mio modulo che è un campo, ma più input. Ogni input all’interno di questo campo ottiene i propri ID, aggiunti all’ID principale e un punto. Se non utilizzi nessuno di questi campi a input multipli, fantastico! Il codice diventa davvero semplice. Ma ho incluso questo campo speciale in modo da poter vedere come accedervi.

In questo momento il nostro problema è che il codice non sa a cosa servono i campi ID 1, 2 o 3. Tali informazioni si trovano nell’array del modulo, più specificamente $form['fields']nell’elemento. Questo elemento contiene tutti i campi del modulo e abbiamo pieno accesso a ciascun oggetto campo. È qui che possiamo trovare il nostro metodo di identificazione prescelto; nel mio esempio cssClass.

Possiamo semplicemente scorrere questi campi e cercare gli identificatori che vogliamo estrarre. Metterò tutti i miei identificatori in un array e possiamo semplicemente controllare se un campo nel ciclo è uno di questi.

Ma prima dobbiamo sapere che il pulsante è stato cliccato. Questo è abbastanza semplice; possiamo semplicemente verificare se la nostra azione personalizzata risiede $_POSTnell’array. Ma poiché stiamo lavorando con Gravity Forms possiamo usare [rgpost](https://docs.gravityforms.com/rgpost/)(). La funzione Gravity Forms rgpost()restituisce semplicemente il valore di una richiesta POST. Controllo rgpost('awp_gf_create_user')ed $_POST['awp_gf_create_user']è esattamente lo stesso. Ma useremo la funzione di Gravity Forms.

Alla riga #8definiamo un array con tutti gli identificatori personalizzati che desideriamo cercare. Questi sono tutti i valori che ho inserito come classe CSS nel mio modulo. Quindi, nel ciclo per ogni campo, controlliamo se il campo è uno di questi identificatori. Nel mio esempio sto usando la classe CSS per identificare i campi ma consiglio di usare input personalizzati. Anche questo codice non funzionerà se sono state fornite più classi CSS.

Quindi alla riga #12aggiungiamo un nuovo elemento alla nostra matrice di valori finali con l’identificatore come chiave. Quindi utilizziamo l’ID del campo e facciamo riferimento all’array di voci. Alla fine di questo ciclo $valuesdovrebbe essere riempito con tutti i valori inviati che sono rilevanti. Tutti i campi lasciati vuoti o non inclusi nell’array identificatore verranno esclusi.

Se hai aggiunto un campo di input multiplo speciale, dovrai aggiungere del codice extra per fare riferimento correttamente ai sub ID. So che awp_addressè un tipo di campo Indirizzo. I tipi di campo indirizzo in Gravity Forms seguono uno schema fisso di ID secondari e ho abilitato solo tre dei possibili input (l’indirizzo stradale 1 ha l’ID secondario 1, il codice postale ha l’ID secondario 3 e la città ha l’ID secondario 5). Per gestire questo tipo di campi, dobbiamo fare qualcosa del genere:

Alla riga #4concateno tutti i valori in modo che la stringa finale sia un formato di indirizzo standardizzato a una riga (", ").

Ora abbiamo tutti i valori necessari ordinatamente ordinati per chiavi identificatore nell’array $values. Quello che fai con questo dipende interamente da te e dalle esigenze del tuo progetto. Ma includerò un esempio di creazione di un utente in WordPress.

Creazione di un nuovo utente dall’invio della voce

Per mantenere pulito il mio codice, chiamerò una funzione separata responsabile della creazione di un nuovo utente. Tutto ciò di cui ho bisogno è passare l’array dei valori. Voglio che questa funzione restituisca una sorta di indicazione del risultato di questa azione. In questo modo posso creare un messaggio indipendentemente dal fatto che l’utente sia stato creato correttamente o se esiste già un utente con l’e-mail fornita.

Quindi definiamo semplicemente la awp_gf_create_user()funzione. Includerò un semplice esempio di creazione di un utente a livello di codice in WordPress. Questo è semplicemente inteso come un esempio per mostrare come utilizzare i valori estratti.

Per prima cosa controlliamo se esiste un utente con l’e-mail fornita con [get_user_by](https://developer.wordpress.org/reference/functions/get_user_by/)(). In caso contrario, utilizziamo [wp_insert_user](https://developer.wordpress.org/reference/functions/wp_insert_user/)()per aggiungere un utente. Ho anche incluso un esempio di memorizzazione di meta utente personalizzati (il nostro campo dell’indirizzo). Infine il nostro metodo dovrebbe restituire il risultato della creazione dell’utente. Se l’utente esisteva già, restituiamo -1. In caso contrario, restituiamo l’ID utente.

Nel nostro rendering di metabox ora possiamo aggiungere condizionalmente un messaggio all’utente finale in base al risultato di questo. Questo è un semplice esempio; se il valore restituito era -1 esiste già un utente con l’e-mail fornita. E se il valore restituito era maggiore di 0, sappiamo che ha creato correttamente un utente. Quindi richiediamo un messaggio che dice che la creazione dell’utente è andata a buon fine.

Evitare contenuti duplicati

Il semplice esempio sopra disabiliterà ereditariamente la creazione di più utenti dalla stessa voce perché verifica se esiste già un utente con l’indirizzo e-mail fornito. Ma in altri casi potresti non avere questa opportunità. Quindi un’altra strategia per evitare che gli utenti finali creino contenuti duplicati dalla stessa voce è l’aggiunta di meta voci personalizzate. In altre parole; se l’azione ha avuto successo, aggiungiamo un meta personalizzato a quella voce. E poi controlliamo semplicemente se quel meta personalizzato esiste prima di iniziare l’azione.

Gravity Forms offre metodi per aggiungere meta personalizzati alle voci; [gform_add_meta](https://docs.gravityforms.com/gform_add_meta/)()oltre a recuperare i valori: [gform_get_meta](https://docs.gravityforms.com/gform_get_meta/)().

Alla riga #4recuperiamo il nostro meta di immissione personalizzato. Se esisteva (non vuoto), impostiamo un messaggio che informa l’utente finale che ha già tentato di creare contenuto da questa voce in precedenza. Se il meta personalizzato non esiste, continuiamo a creare i nostri contenuti. Quando il contenuto è stato creato correttamente, è necessario aggiungere il meta personalizzato alla voce (riga #10).

Conclusione e codice finale

In questo post ho cercato di fornire un esempio di come creare contenuti da una voce in Gravity Forms. Gli esempi di codice hanno lo scopo di darti un’idea su come personalizzarlo e modificarlo per adattarlo alle esigenze del tuo progetto. Consiglio vivamente di espandere questa funzionalità per gestire meglio i messaggi di errore. Potresti anche voler aggiungere questo metabox solo per uno o più moduli specifici. Ma questa dovrebbe essere una buona base su cui costruire.

Ed ecco il codice finale:

Fonte di registrazione: awhitepixel.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More