✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

Looge programmiliselt sisu gravitatsioonivormide kirjetest

10

See postitus juhendab teid, kuidas luua mis tahes sisu (kasutajad, postitused või midagi muud kohandatud) vormi Gravity Forms kirjete põhjal. Lisame administraatori sisestuse üksikasjade ekraanile ala, et luua sisu esitatud teabe põhjal.

Mida me teeme

Loome Gravity Formi sisestuse üksikasjade ekraanil uue metakasti. Sellesse metakasti lisame nupu. Idee seisneb selles, et lõppkasutaja saab sisestuse üle vaadata ja kui ta sisestuse üksikasjad heaks kiidab, saab sisu loomise käivitamiseks nuppu vajutada.

Looge programmiliselt sisu gravitatsioonivormide kirjetest

Selle nupu klõpsamisel käivitub meie kood, sooritame vajalikud toimingud ja soovi korral edastame lõppkasutajale teate tulemusest. Lisame (valikuliselt) kirjele ka metaandmed, et saaksime hõlpsalt kontrollida, kas sellest kirjest on varem sisu loodud või mitte.

Jätan koodi üsna lihtsaks ja üldiseks, et saaksite seda hõlpsasti asendada ja kohandada vastavalt oma projekti vajadustele. Allolevas näites eeldan, et tahame kasutaja programmiliselt luua. Kuid see, mida te sisestusandmetega ette võtate, on täielikult teie otsustada; võite soovi korral luua postituse, värskendada muud sisu või saata kohandatud meili.

Väljade tuvastamine

Esimene kaalutlus, mida peame tegema, on väljade tuvastamine. Teisisõnu, me peame teadma, milline valdkond on mis. Pidage meeles, et Gravity Formsis oleva kirje väärtustele viidatakse nende vormivälja ID-dele. Ja isegi juurdepääsuga iga vormivälja teabele – vajame kindlat viisi, et teada saada, millised väljad on missugune teave. Vorm võib koosneda neljast tekstisisestusviisist – me peame teadma, millised neljast tekstisisendist on eesnime jaoks.

Siin on teil mõned alternatiivid. Saate väljade ID-sid kõvasti kodeerida (nt määrata, et välja ID 2 on perekonnanimi), kuid see on väga vigane ja pole soovitatav. Lihtne viis on kasutada Gravity Formsis üht olemasolevat väljateabe sisendit, näiteks CSS-klassi nime. Kuid pidage meeles, et lõppkasutaja võib soovitud stiili saamiseks anda mitu klassinime ja teie kood võib kergesti puruneda, kui te seda stringi korralikult ei sõelu. Soovitan kindlasti oma kohandatud sisendite lisamist väljadele:

Kui soovite oma koodi väljade tuvastamiseks kindlat meetodit, vaadake kindlasti ülaltoodud postitust, kuidas seda teha. Kuid et see oleks selles postituses lihtne, kasutan ma CSS-klassi ja eeldan, et kasutaja ei sisesta midagi muud peale väärtuste, mida me selles valdkonnas vajame.

Vormi seadistamine

Esimene samm on loomulikult vormi seadistamine vajalike väljade ja väljatüüpidega. Ja siis sisestate välja identifikaatorid nende õigetesse kohtadesse. Näitena on mul selline vorm:

Looge programmiliselt sisu gravitatsioonivormide kirjetest

Ja iga välja jaoks, mida tahan kaasata, pakun kohandatud CSS-klassi, mida saan oma koodis sihtida. Näiteks eesnime jaoks;

Looge programmiliselt sisu gravitatsioonivormide kirjetest

Liigume nüüd edasi koodi ja selle juurde, kuidas luua funktsioon, mis teisendab esildised kohandatud sisuks.

Metaboksi lisamine sisestuse üksikasjadesse

Esimene samm on kohandatud sisu loomiseks mingi toimingupäästiku lisamine. Loomulik koht on sisestuse üksikasjade ekraanil. See võimaldab lõppkasutajal esitatud väärtused üle vaadata ja seejärel otsustada, kas luua nende põhjal sisu või mitte. Gravity Forms võimaldab arendajatel nendel ekraanidel hõlpsasti kohandatud metakaste luua.

Kirje üksikasjade jaoks kohandatud metakasti loomiseks saame kasutada filtrit gform_entry_detail_meta_boxes. See on filter, mis tagastab kõigi metakastide massiivi, mis kuvatakse kirje üksikasjades. Lisame lihtsalt uue massiivielemendi, et luua uus metakast, ja määratleme selle sisu renderdamiseks tagasihelistamisfunktsiooni. Seadsime lahtrisse „ " kena kirjeldava pealkirja titleja määratleme selle positsiooni, mis kuvatakse jaotises „ side“.

Ja siis peame määratlema tagasihelistamise funktsiooni: awp_gf_create_user_metabox_render()meie koodis. See funktsioon vastutab metakasti sisu renderdamise eest. Selle funktsiooni parameetrina saame argumentide massiivi, millest saame tuua vormi ja kirje objekti;

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

Kõik, mida peame selle funktsiooni puhul tegema, on HTML-i koostamine ja selle kordamine.

Toimingu käivitamiseks nupu lisamisel järgime sama meetodit, mida Gravity Forms ise teeb. Kogu sisestuse üksikasjade ekraani ümbritseb vormielement ja meil pole vaja muud teha, kui lisada esitamisnupule onclick sündmus, mis muudab actionatribuuti. Me määratleme oma kohandatud toimingu nime, et teaksime, millal see käivitati – ja see ei lähe vastuollu Gravity Formsi tegevustega.

Kutsume oma kohandatud toimingut " awp_gf_create_user" ja renderdame esitamisnupu koos onclick sündmusega, näiteks:

Ülaltoodud koodiga saame sisestamise üksikasjade ekraani küljele uue metakasti, mis näeb välja järgmine:

Looge programmiliselt sisu gravitatsioonivormide kirjetest

Praegu ei juhtu nupule klõpsates midagi. See on lihtsalt sellepärast, et me pole veel kirjutanud koodi selle kuulamiseks.

Väärtuste eraldamine kirjest

Nagu varem mainitud, identifitseeritakse kõik sisestatud väärtused sisestusmassiivis nende välja ID-de järgi.

Looge programmiliselt sisu gravitatsioonivormide kirjetest

Ülaloleval pildil on väljal ID 1 eesnimi, ID 2 perekonnanimi ja nii edasi. Aga oota – mis toimub 5.1, 5.3 ja muuga? Gravity Formsis saame "alam-ID-d" spetsiaalse välja jaoks, mis aktsepteerib mitut väärtust. Lisasin oma vormile aadressivälja, mis on üks väli, kuid sisaldab mitut sisendit. Iga sisend sellel väljal saab oma ID-d, mis on lisatud põhi-ID-le. ja punkt. Kui te ühtegi neist mitme sisendiga väljadest ei kasuta, siis suurepärane! Kood muutub väga lihtsaks. Kuid lisasin selle erivälja, et saaksime näha, kuidas sellele juurde pääseda.

Praegu on meie probleem selles, et kood ei tea, mille jaoks välja ID 1, 2 või 3 on mõeldud. See teave asub vormimassiivis, täpsemalt $form['fields']elemendis. See element sisaldab kõiki vormi välju ja meil on täielik juurdepääs igale väljaobjektile. Siit leiame meie valitud identifitseerimismeetodi; minu näites cssClass.

Võime need väljad lihtsalt läbi sirvida ja otsida identifikaatoreid, mida tahame eraldada. Panen kõik oma identifikaatorid massiivi ja saame lihtsalt kontrollida, kas tsükli väli on üks neist.

Kuid kõigepealt peame teadma, et nuppu klõpsati. See on üsna lihtne; saame lihtsalt kontrollida, kas meie kohandatud toiming asub $_POSTmassiivis. Kuid kuna me töötame Gravity Formsiga, saame kasutada [rgpost](https://docs.gravityforms.com/rgpost/)(). Funktsioon Gravity Forms rgpost()tagastab lihtsalt POST-päringu väärtuse. Kontrollimine rgpost('awp_gf_create_user')ja $_POST['awp_gf_create_user']on täpselt sama. Kuid me kasutame Gravity Formsi funktsiooni.

Real #8määratleme massiivi kõigi kohandatud identifikaatoritega, mida soovime otsida. Need on kõik väärtused, mille olen oma vormi CSS-klassina sisestanud. Seejärel kontrollime iga välja tsüklis, kas väli on üks neist identifikaatoritest. Oma näites kasutan väljade tuvastamiseks CSS-klassi, kuid soovitan kasutada kohandatud sisendeid. See kood ei tööta ka siis, kui on antud mitu CSS-klassi.

Seejärel #12lisame reale oma lõppväärtuste massiivi uue elemendi, mille võtmeks on identifikaator. Seejärel kasutame välja ID-d ja viitame sisestusmassiivile. Selle tsükli lõpus $valuestuleks täita kõik asjakohased esitatud väärtused. Kõik tühjaks jäetud või identifikaatorite massiivi mitte kaasatud väljad jäetakse välja.

Kui lisasite spetsiaalse mitme sisestusvälja, peate alam-ID-dele õigesti viitamiseks lisama lisakoodi. Ma tean, et awp_addresssee on aadressivälja tüüp. Gravity Forms’i aadressiväljatüübid järgivad alam-ID-de fikseeritud mustrit ja olen lubanud ainult kolm võimalikku sisendit (tänavaaadressil 1 on alam-ID 1, postiindeksil alam-ID 3 ja linnal on alam-ID 5). Selliste väljade käsitlemiseks peame tegema midagi sellist:

Real #4ühendan kõik väärtused nii, et lõplik string on standardiseeritud üherealine aadressivorming (“, “).

Nüüd on kõik vajalikud väärtused massiivi identifikaatorivõtmete järgi kenasti sorteeritud $values. See, mida te sellega ette võtate, sõltub täielikult teie ja teie projekti vajadustest. Aga lisan näite kasutaja loomisest WordPressis.

Kande esitamisest uue kasutaja loomine

Koodi puhtana hoidmiseks kutsun välja eraldi funktsiooni, mis vastutab uue kasutaja loomise eest. Kõik, mida ma vajan, on väärtuste massiivi edastamine. Ma tahan, et see funktsioon annaks mingisuguse viite selle toimingu tulemusele. Nii saan luua sõnumi olenemata sellest, kas kasutaja loomine õnnestus või mitte või kui antud e-posti aadressiga kasutaja on juba olemas.

Seejärel määratleme lihtsalt awp_gf_create_user()funktsiooni. Lisan lihtsa näite kasutaja programmilisest loomisest WordPressis. See on mõeldud lihtsalt näitena, et näidata, kuidas ekstraktitud väärtusi kasutada.

Kõigepealt kontrollime, kas antud e-posti aadressiga kasutaja on olemas [get_user_by](https://developer.wordpress.org/reference/functions/get_user_by/)(). Kui ei, siis kasutame [wp_insert_user](https://developer.wordpress.org/reference/functions/wp_insert_user/)()kasutaja lisamiseks. Lisasin ka näite kohandatud kasutaja meta (meie aadressiväli) salvestamisest. Lõpuks peaks meie meetod tagastama kasutaja loomise tulemuse. Kui kasutaja oli juba olemas, tagastame -1. Vastasel juhul tagastame kasutajatunnuse.

Tagasi meie metaboksi renderdusse saame nüüd selle tulemuse põhjal tingimuslikult lõppkasutajale sõnumi lisada. See on lihtne näide; kui tagastatud väärtus oli -1, on antud e-posti aadressiga kasutaja juba olemas. Ja kui tagastatud väärtus oli suurem kui 0, siis teame, et see lõi kasutaja edukalt. Seetõttu kuvatakse teade, mis ütleb, et kasutaja loomine õnnestus.

Dubleeriva sisu vältimine

Ülaltoodud lihtne näide keelab pärilikult mitme kasutaja loomise samast kirjest, kuna see kontrollib, kas antud e-posti aadressiga kasutaja on juba olemas või mitte. Kuid muudel juhtudel ei pruugi teil seda võimalust olla. Teine strateegia, mille eesmärk on vältida lõppkasutajate sama kirje dubleeriva sisu loomist, on kohandatud kirje meta lisamine. Teisisõnu; kui toiming õnnestus, lisame sellele kirjele kohandatud meta. Ja siis kontrollime lihtsalt enne toimingu alustamist, kas see kohandatud meta on olemas.

Gravity Forms pakub meetodeid kohandatud meta lisamiseks kirjetele; [gform_add_meta](https://docs.gravityforms.com/gform_add_meta/)()samuti väärtuste toomine: [gform_get_meta](https://docs.gravityforms.com/gform_get_meta/)().

Real #4toome oma kohandatud sisestuse meta. Kui see oli olemas (mitte tühi), seadsime lõppkasutajale teate, et ta on juba varem proovinud sellest kirjest sisu luua. Kui kohandatud metat ei eksisteerinud, jätkame oma sisu loomist. Kui sisu on edukalt loodud, peame kirjele (rida #10) lisama kohandatud meta.

Järeldus ja lõplik kood

Selles postituses olen püüdnud tuua näite, kuidas Gravity Formsis kirjest sisu luua. Koodinäidete eesmärk on anda teile idee selle kohta, kuidas seda oma projekti vajadustega kohandada ja muuta. Soovitan kindlasti seda funktsiooni laiendada, et veateadetega paremini toime tulla. Samuti võiksite selle metakasti lisada ainult konkreetse(te) vormi(de) jaoks. Kuid see peaks olema hea alus, millele tugineda.

Ja siin on lõplik kood:

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem