✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Luo ohjelmallisesti sisältöä Gravity Forms -merkinnöistä

12

Tämä viesti opastaa sinua luomaan kaikenlaista sisältöä (käyttäjiä, viestejä tai jotain muuta mukautettua) Gravity Forms -lomakkeen merkintöjen perusteella. Lisäämme järjestelmänvalvojan syöttötietonäyttöön alueen sisällön luomiseksi lähetettyjen tietojen perusteella.

Mitä teemme

Luomme uuden metalaatikon Gravity Formin syöttötietonäytölle. Tähän metalaatikkoon lisäämme painikkeen. Ajatuksena on, että loppukäyttäjä voi tarkistaa merkinnän ja jos hän hyväksyy merkinnän tiedot, hän voi painaa painiketta käynnistääkseen sisällön luomisen.

Luo ohjelmallisesti sisältöä Gravity Forms -merkinnöistä

Koodimme käynnistyy, kun napsautat tätä painiketta, teemme tarvittavat toiminnot ja valinnaisesti näytämme loppukäyttäjälle viestin tuloksesta. Lisäämme myös (valinnaisesti) metatiedot merkintään, jotta voimme helposti tarkistaa, onko tästä merkinnästä luotu sisältöä aiemmin vai ei.

Pidän koodin melko yksinkertaisena ja yleisenä, jotta voit helposti korvata ja muokata sitä projektisi tarpeiden mukaan. Alla olevassa esimerkissä oletetaan, että haluamme luoda käyttäjän ohjelmallisesti. Mutta se, mitä teet merkintätiedoilla, on täysin sinun päätettävissäsi. voit luoda viestin, päivittää muuta sisältöä tai lähettää mukautetun sähköpostin, jos haluat.

Kenttien tunnistaminen

Ensimmäinen huomio, joka meidän on tehtävä, on kentät tunnistaminen. Toisin sanoen meidän on tiedettävä, mikä ala on mitä. Muista, että merkinnän arvot Gravity Formsissa viittaavat niiden lomakekenttien tunnuksiin. Ja jopa jokaisen lomakekentän tietoihin pääsyllä – tarvitsemme varman tavan tietää, mitkä kentät ovat mitäkin tietoja. Lomake voi koostua neljästä tekstinsyötöstä – meidän on tiedettävä, mitkä neljästä tekstinsyötöstä ovat etunimeä varten.

Sinulla on tässä muutamia vaihtoehtoja. Voit koodata kenttien tunnukset (esim. määrittää, että kenttätunnus 2 on sukunimi), mutta tämä on erittäin altis virheille, eikä sitä suositella. Yksinkertainen tapa on käyttää jotakin Gravity Formsissa olevista kenttätietosyötteistä, esimerkiksi CSS-luokan nimi. Muista kuitenkin, että loppukäyttäjä voi antaa useita luokkien nimiä saadakseen haluamansa tyylin, ja koodisi voi helposti katketa, jos et jäsennä tätä merkkijonoa oikein. Suosittelen ehdottomasti omien mukautettujen syötteiden lisäämistä kenttiin:

Jos haluat vankan tavan tunnistaa koodisi kentät, tarkista ehdottomasti, miten yllä olevasta viestistä. Mutta pitääkseni asian yksinkertaisena tässä viestissä, käytän CSS-luokkaa ja oletan, että käyttäjä ei syötä mitään muuta kuin tarvitsemme tällä alueella.

Lomakkeen asettaminen

Ensimmäinen vaihe on luonnollisesti lomakkeen määrittäminen tarvitsemillasi kentillä ja kenttätyypeillä. Ja sitten lisäät kenttätunnisteet niiden oikeisiin paikkoihin. Esimerkkinä minulla on tämä lomake:

Luo ohjelmallisesti sisältöä Gravity Forms -merkinnöistä

Jokaiselle kenttään, jonka haluan sisällyttää, tarjoan mukautetun CSS-luokan, johon voin kohdistaa koodissani. Esimerkiksi etunimi;

Luo ohjelmallisesti sisältöä Gravity Forms -merkinnöistä

Siirrytään nyt koodiin ja toiminnon luomiseen, joka muuntaa lähetykset mukautetuksi sisällöksi.

Metalaatikon lisääminen tiedoissa

Ensimmäinen askel on jonkinlaisen toimintokäynnistimen lisääminen mukautetun sisällön luomiseksi. Luonnollinen paikka on syöttötietonäytössä. Tämän avulla loppukäyttäjä voi tarkistaa lähetetyt arvot ja päättää sitten, luodaanko niistä sisältöä vai ei. Gravity Formsin avulla kehittäjät voivat helposti luoda mukautettuja metalaatikoita näille näytöille.

Voimme käyttää suodatinta luodaksesi mukautetun metalaatikon syötteiden tiedoille gform_entry_detail_meta_boxes. Se on suodatin, joka palauttaa joukon kaikkia metalaatikoita näytettäväksi merkinnän tiedoissa. Lisäämme vain uuden taulukkoelementin luodaksemme uuden metalaatikon ja määritämme takaisinsoittotoiminnon sisällön renderöimiseksi. Asetamme kauniin kuvaavan otsikon kohtaan " title" ja määritämme sen sijainnin näkyväksi " side".

Ja sitten meidän on määritettävä takaisinsoittotoiminto: awp_gf_create_user_metabox_render()koodissamme. Tämä toiminto vastaa metalaatikon sisällön renderöimisestä. Tämän funktion parametrina saamme joukon argumentteja, joista voimme hakea lomake- ja merkintäobjektin;

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; }

Tässä toiminnossa meidän tarvitsee vain rakentaa HTML-koodia ja toistaa se.

Mitä tulee painikkeen lisäämiseen toiminnon käynnistämiseksi, noudatamme samaa menetelmää kuin Gravity Forms itse tekee sen. Lomake-elementti ympäröi koko merkintätietonäytön, ja meidän tarvitsee vain lisätä onclick-tapahtuma lähetyspainikkeeseen, joka muuttaa actionominaisuuden " ". Määrittelemme oman mukautetun toimintonimemme, jotta tiedämme, milloin se on käynnistetty – eikä se ole ristiriidassa Gravity Formsin toimien kanssa.

Kutsutaan mukautettua toimintoamme awp_gf_create_userja luodaan lähetyspainike, jossa on onclick-tapahtuma, kuten näin:

Yllä olevalla koodilla saamme uuden metalaatikon syöttötietonäytön sivulle, joka näyttää tältä:

Luo ohjelmallisesti sisältöä Gravity Forms -merkinnöistä

Tällä hetkellä mitään ei tapahdu, kun nappia painetaan. Tämä johtuu vain siitä, että emme ole vielä kirjoittaneet koodia sen kuuntelemiseksi.

Poimitaan arvot merkinnästä

Kuten aiemmin mainittiin, kaikki syötetaulukossa lähetetyt arvot tunnistetaan niiden kenttätunnuksilla.

Luo ohjelmallisesti sisältöä Gravity Forms -merkinnöistä

Yllä olevassa kuvassa kentän ID 1 on etunimi, ID 2 on sukunimi ja niin edelleen. Mutta odota – mitä tapahtuu versioille 5.1, 5.3 ja niin edelleen? Gravity Formsissa saamme "alatunnukset" erikoiskenttään, joka hyväksyy useita arvoja. Lisäsin lomakkeelle osoitekentän, joka on yksi kenttä, mutta useita syötteitä. Jokainen tämän kentän syöte saa omat tunnuksensa, jotka liitetään päätunnukseen ja piste. Jos et käytä mitään näistä useista syötteistä varustetuista kentistä, hienoa! Koodista tulee todella yksinkertainen. Mutta olen lisännyt tämän erikoiskentän, jotta voimme nähdä, kuinka siihen pääsee käsiksi.

Tällä hetkellä ongelmamme on, että koodi ei tiedä, mitä varten kenttätunnus 1, 2 tai 3 on tarkoitettu. Nämä tiedot ovat lomaketaulukossa, tarkemmin sanottuna $form['fields']elementissä. Tämä elementti sisältää kaikki lomakkeen kentät, ja meillä on täysi pääsy jokaiseen kenttäobjektiin. Täältä löydämme valitsemamme tunnistusmenetelmän; minun esimerkissäni cssClass.

Voimme yksinkertaisesti selata näitä kenttiä ja etsiä tunnisteita, jotka haluamme poimia. Laitan kaikki tunnisteeni taulukkoon ja voimme yksinkertaisesti tarkistaa, onko silmukan kenttä yksi näistä.

Mutta ensin meidän on tiedettävä, että painiketta napsautettiin. Tämä on melko yksinkertainen; voimme yksinkertaisesti tarkistaa, onko mukautettu toimintomme $_POSTtaulukossa. Mutta koska työskentelemme Gravity Formsin kanssa, voimme käyttää [rgpost](https://docs.gravityforms.com/rgpost/)(). Gravity Forms -funktio rgpost()yksinkertaisesti palauttaa POST-pyynnön arvon. Tarkistetaan rgpost('awp_gf_create_user')ja $_POST['awp_gf_create_user']on täsmälleen sama. Mutta käytämme Gravity Formsin funktiota.

Rivillä #8määrittelemme taulukon, jossa on kaikki mukautetut tunnisteet, joita haluamme etsiä. Nämä ovat kaikki arvot, jotka olen syöttänyt lomakkeelleni CSS-luokkana. Sitten kunkin kentän silmukassa tarkistamme, onko kenttä jokin näistä tunnisteista. Esimerkissäni käytän CSS-luokkaa kenttien tunnistamiseen, mutta suosittelen mukautettujen syötteiden käyttöä. Tämä koodi ei myöskään toimi, jos useita CSS-luokkia on annettu.

Sitten riville #12lisäämme uuden elementin lopullisten arvojen taulukkoomme tunnisteella avaimena. Käytämme sitten kentän tunnusta ja viittaamme syöttötaulukkoon. Tämän silmukan lopussa $valuestulee täyttää kaikki asiaankuuluvat lähetetyt arvot. Kaikki kentät, jotka jätettiin tyhjiksi tai jotka eivät sisälly tunnistetaulukkoon, suljetaan pois.

Jos olet lisännyt erityisen usean syöttökentän, sinun on lisättävä ylimääräinen koodi viittataksesi alatunnuksiin oikein. Tiedän, että awp_addressse on osoitekenttätyyppi. Gravity Formsin osoitekenttätyypit noudattavat kiinteää alatunnusten mallia, ja olen ottanut käyttöön vain kolme mahdollista syötettä (katuosoitteella 1 on alatunnus 1, postinumerolla alitunnus 3 ja kaupungilla alitunnus 5). Tällaisten kenttien käsittelemiseksi meidän on tehtävä jotain tämän kaltaista:

Rivillä #4ketjutan kaikki arvot niin, että lopullinen merkkijono on standardoitu yksirivinen osoitemuoto (“, “).

Meillä on nyt kaikki tarvittavat arvot hienosti lajiteltuina tunnisteavainten mukaan taulukossa $values. Se, mitä teet tämän kanssa, riippuu täysin sinusta ja projektisi tarpeista. Mutta lisään esimerkin käyttäjän luomisesta WordPressissä.

Uuden käyttäjän luominen osallistumisen lähettämisestä

Pitääkseni koodini puhtaana kutsun erillisen toiminnon, joka vastaa uuden käyttäjän luomisesta. Tarvitsen vain välittää arvot. Haluan tämän funktion palauttavan jonkinlaisen osoituksen tämän toiminnon tuloksesta. Tällä tavalla voin luoda viestin riippumatta siitä, onko käyttäjän luominen onnistunut tai onko käyttäjä, jolla on annettu sähköpostiosoite, jo olemassa.

Sitten yksinkertaisesti määrittelemme awp_gf_create_user()funktion. Lisään yksinkertaisen esimerkin käyttäjän luomisesta ohjelmallisesti WordPressissä. Tämä on yksinkertaisesti tarkoitettu esimerkkinä osoittamaan, kuinka poimittuja arvoja käytetään.

Tarkistamme ensin, onko käyttäjä jolla on annettu sähköpostiosoite olemassa [get_user_by](https://developer.wordpress.org/reference/functions/get_user_by/)(). Jos ei, käytämme [wp_insert_user](https://developer.wordpress.org/reference/functions/wp_insert_user/)()käyttäjän lisäämiseen. Olen myös lisännyt esimerkin mukautetun käyttäjän metatietojen (osoitekenttämme) tallentamisesta. Lopuksi menetelmämme pitäisi palauttaa käyttäjän luomisen tulos. Jos käyttäjä oli jo olemassa, palautetaan -1. Muussa tapauksessa palautamme käyttäjätunnuksen.

Takaisin metabox-renderöintiimme voimme nyt ehdollisesti lisätä viestin loppukäyttäjälle tämän tuloksen perusteella. Tämä on yksinkertainen esimerkki; jos palautettu arvo oli -1, käyttäjä, jolla on annettu sähköpostiosoite, on jo olemassa. Ja jos palautettu arvo oli suurempi kuin 0, tiedämme, että se loi käyttäjän onnistuneesti. Näin ollen kehotamme sanomaan, että käyttäjän luominen onnistui.

Päällekkäisen sisällön välttäminen

Yllä oleva yksinkertainen esimerkki estää useiden käyttäjien luomisen samasta merkinnästä, koska se tarkistaa, onko käyttäjä jo olemassa, jolla on annettu sähköpostiosoite. Mutta muissa tapauksissa sinulla ei ehkä ole tätä mahdollisuutta. Toinen strategia, jolla estetään loppukäyttäjien luomasta päällekkäistä sisältöä samasta merkinnästä, on lisätä mukautetun merkinnän meta. Toisin sanoen; Jos toiminto onnistui, lisäämme tähän merkintään mukautetun metan. Ja sitten yksinkertaisesti tarkistamme, onko tämä mukautettu meta olemassa, ennen kuin aloitamme toiminnon.

Gravity Forms tarjoaa menetelmiä mukautetun metan lisäämiseksi merkintöihin; [gform_add_meta](https://docs.gravityforms.com/gform_add_meta/)()sekä arvojen hakeminen: [gform_get_meta](https://docs.gravityforms.com/gform_get_meta/)().

Linjalta #4haemme mukautetun merkinnän metamme. Jos se oli olemassa (ei tyhjä), asetamme loppukäyttäjälle viestin, joka ilmoittaa, että hän on jo yrittänyt luoda sisältöä tästä merkinnästä aiemmin. Jos mukautettua metaa ei ollut olemassa, jatkamme sisältömme luomista. Kun sisältö on luotu onnistuneesti, meidän on lisättävä mukautettu metatieto merkintään (rivi #10).

Johtopäätös ja lopullinen koodi

Tässä viestissä olen yrittänyt antaa esimerkin siitä, kuinka luoda sisältöä Gravity Formsin merkinnästä. Koodiesimerkit on tarkoitettu antamaan sinulle käsitys siitä, miten voit muokata ja muuttaa sitä projektisi tarpeiden mukaan. Suosittelen ehdottomasti tämän toiminnon laajentamista virheilmoitusten käsittelemiseksi paremmin. Haluat ehkä myös lisätä tämän metalaatikon vain tietyille lomakkeille. Mutta tämän pitäisi olla hyvä perusta, jolle rakentaa.

Ja tässä lopullinen koodi:

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja