{"id":233457,"date":"2023-02-13T11:12:00","date_gmt":"2023-02-13T08:12:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233457"},"modified":"2022-11-10T23:47:55","modified_gmt":"2022-11-10T20:47:55","slug":"guida-completa-come-popolare-dinamicamente-i-campi-nei-moduli-di-gravita","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/guida-completa-come-popolare-dinamicamente-i-campi-nei-moduli-di-gravita\/","title":{"rendered":"Guida completa: come popolare dinamicamente i campi nei moduli di gravit\u00e0"},"content":{"rendered":"\n<p>Costruire moduli semplici o complessi in <a href=\"https:\/\/www.gravityforms.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Gravity Forms<\/a> \u00e8 facile e veloce. Una delle funzionalit\u00e0 offerte da Gravity Forms ti consente di preselezionare o precompilare condizionalmente i campi in un modulo. Ci\u00f2 \u00e8 utile quando si dispone dello stesso modulo su pi\u00f9 pagine di contatto per ciascun reparto e si desidera preselezionare il reparto corrispondente nel modulo. Oppure stai incorporando un modulo di richiesta nelle pagine di prodotti o servizi e desideri precompilare automaticamente le informazioni sul prodotto o servizio corrente in ogni invio.<\/p>\n<p>Puoi preselezionare o precompilare dinamicamente i campi in diversi modi e puoi anche sostituire dinamicamente le possibili scelte in un menu a discesa, pulsante di opzione o gruppo di caselle di controllo. Il campo che popola dinamicamente pu\u00f2 essere un campo visibile che l&#8217;utente pu\u00f2 modificare, oppure pu\u00f2 essere instradato in un campo nascosto in modo che il lettore degli invii del modulo ottenga informazioni vitali.<\/p>\n<h2>I quattro modi per popolare dinamicamente i campi<\/h2>\n<p>In questa guida esamineremo quattro modi per popolare dinamicamente i campi in un modulo Gravity Forms. Tre di loro che puoi fare senza toccare alcun codice! Ma se vuoi modificare dinamicamente le possibili scelte in un gruppo di selezione, pulsante di opzione o caselle di controllo, dovrai scrivere del codice PHP. Vedremo come farlo alla fine.<\/p>\n<p>Puoi popolare dinamicamente i campi in base a:<\/p>\n<ul>\n<li>Aggiunta di informazioni aggiuntive nell&#8217;URL.<\/li>\n<li>Fornisci ulteriori informazioni allo shortcode di incorporamento di Gravity Forms.<\/li>\n<li>Definizione di informazioni extra per Gravity Forms Block (se stai usando WordPress con Gutenberg).<\/li>\n<li>Utilizzo di filtri con codice PHP.<\/li>\n<\/ul>\n<p>Ma prima dobbiamo esaminare come attivare la popolazione dinamica di un campo.<\/p>\n<h2>Attivazione di un campo per consentire la popolazione dinamica<\/h2>\n<p>Il primo passaggio, indipendentemente dal metodo utilizzato per popolare il campo, \u00e8 attivarlo sul campo stesso.<\/p>\n<p>Nella modifica del modulo, espandi il campo e all&#8217;interno della scheda &quot;Avanzate&quot;, troverai una casella di controllo &quot;Consenti il \u200b\u200briempimento dinamico del campo&quot;. Spunta questa opzione e viene visualizzato un nuovo input di testo che ti consente di definire il nome del parametro. Questo pu\u00f2 essere tutto quello che vuoi, ma dovrebbe essere unico e senza spazi.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153486-61e50e767c316.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153486-61e50e767c316.png\" alt=\"Guida completa: come popolare dinamicamente i campi nei moduli di gravit\u00e0\" ><\/a><\/p>\n<p>Salva il modulo ed \u00e8 pronto per te decidere quale metodo utilizzare per compilarlo.<\/p>\n<h2>Popolamento dinamico dai parametri URL<\/h2>\n<p>Puoi aggiungere parametri GET al collegamento alla pagina che incorpora il modulo, ad esempio se il collegamento si trova all&#8217;interno di un altro testo del post o \u00e8 un collegamento personalizzato nei menu di WordPress.<\/p>\n<p>Aggiungi semplicemente le variabili di query in coppie di valori chiave, con il nome del parametro come chiave e il loro valore come vuoi che sia il loro valore. \u00c8 possibile aggiungere pi\u00f9 coppie di valori chiave se si desidera popolare pi\u00f9 campi nel modulo, \u00e8 sufficiente separare ciascuna coppia con &quot;&#038;&quot;.<\/p>\n<p>Supponendo che il tuo modulo esista in questa pagina: &quot; <code>https:\/\/example.com\/contact-me\/<\/code>&quot;, e il nome del tuo parametro sia <code>awp_populate_me<\/code>, puoi compilare il campo utilizzando questo URL: &quot; <code>https:\/\/example.com\/contact-me\/?awp_populate_me=Hello<\/code>&quot;.<\/p>\n<p>Tieni presente che gli URL devono essere codificati correttamente. Ad esempio, non puoi semplicemente aggiungere spazi o caratteri speciali direttamente come valore del parametro. Fornire &quot;Ciao mondo!&quot; come valore sarebbe &#8221; <code>Hello%20world%21<\/code>&#8220;. Ci sono molti strumenti online per codificare gli URL per te se desideri procedere in questo modo.<\/p>\n<h2>Popolamento dinamico da shortcode<\/h2>\n<p>Tutti i moduli vengono inseriti tramite uno shortcode. Puoi popolare dinamicamente i campi direttamente all&#8217;interno di questo shortcode. Questo metodo potrebbe essere utile se stai utilizzando lo stesso modulo in pi\u00f9 post (ad es. registrando i partecipanti a diversi eventi o corsi) e devi fornire qualcosa di unico per sapere da quale evento o corso proviene il modulo\u2026\u2026<\/p>\n<p>Normalmente quando si incorpora un modulo, si ottiene uno shortcode simile a questo:<code>[gravityforms id=\"1\" title=\"Contact us\"]<\/code><\/p>\n<p>Modifica lo shortcode e aggiungi il set di chiavi <code>field_values<\/code>a una stringa che contiene il nome del parametro uguale al valore desiderato. Ad esempio, l&#8217;impostazione di un parametro <code>awp_populate_me<\/code>su &quot;Hello World&quot; viene eseguita in questo modo:<\/p>\n<pre><code>[gravityforms id=\"1\" title=\"Contact us\" field_values=\"awp_populate_me=Hello World\"]<\/code><\/pre>\n<p>Se devi compilare pi\u00f9 campi, aggiungi una &quot;&#038;&quot; in mezzo, in questo modo:<\/p>\n<pre><code>[gravityforms id=\"1\" title=\"Contact us\" field_values=\"awp_populate_me=Hello World&amp;awp_another_field=Hello to you too\"]<\/code><\/pre>\n<h2>Popolamento dinamico da Block a Gutenberg<\/h2>\n<p>Se hai GravityForms versione 2.4.13+ e WordPress con Gutenberg (WordPress 5+), puoi aggiungere Gravity Forms come blocco. All&#8217;interno di questo blocco hai anche un metodo per popolare i campi.<\/p>\n<p>Aggiungi il blocco &quot;Moduli&quot; in Gutenberg e scegli il tuo modulo. Il blocco dovrebbe trasformarsi in un&#8217;anteprima del modulo. Nel pannello di destra espandi Avanzate e troverai un&#8217;area di testo denominata &quot;Valori campo&quot;. In quest&#8217;area di testo puoi digitare i nomi e i valori dei parametri, proprio come faresti con lo shortcode. Es. &#8221; <code>awp_populate_me=Hello World!<\/code>&#8220;<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153486-61e50e777b45f.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153486-61e50e777b45f.png\" alt=\"Guida completa: come popolare dinamicamente i campi nei moduli di gravit\u00e0\" ><\/a><\/p>\n<h2>Popolamento dinamico dal codice<\/h2>\n<p>E infine, se preferisci popolare i tuoi campi usando il codice PHP, ci sono filtri per questo. Puoi inserire questo codice nel tuo tema <code>functions.php<\/code>.<\/p>\n<p>Il modo in cui lo codifichi dipende dal tipo di campo; come probabilmente puoi intuire il popolamento (sostituendo tutte le scelte) in una selezione, le caselle di controllo o il gruppo radio devono essere gestiti in modo diverso rispetto alla semplice compilazione di un singolo campo di testo.<\/p>\n<h3>Compilazione di un campo a valore singolo<\/h3>\n<p>La compilazione di un campo che ha un unico valore (questo si applica a campo di testo, area di testo, campo di posta elettronica, campo di telefono e simili) pu\u00f2 essere eseguita facilmente filtrando <code>gform_field_value_&lt;parameter name&gt;<\/code>. Nel nostro esempio:<\/p>\n<pre><code>add_filter('gform_field_value_awp_populate_me', function($value) {\n    return 'Hello world!';\n});<\/code><\/pre>\n<p>\u00c8 inoltre possibile utilizzare questo filtro per preselezionare un&#8217;opzione in un campo multivalore, ad esempio seleziona (elenco a discesa), pulsanti di opzione o caselle di controllo.<\/p>\n<h3>Popolamento di un pulsante di selezione o di opzione<\/h3>\n<p>Se sei semplicemente interessato a preselezionare un&#8217;opzione, segui la guida sopra per compilare un campo a valore singolo. Questo codice \u00e8 pensato per personalizzare o sostituire le possibili scelte che ottieni sul campo.<\/p>\n<h4>Filtri di rendering dei moduli di Gravity Forms<\/h4>\n<p>Il <code>gform_pre_render<\/code>filtro ci consente di modificare il modulo subito prima che venga visualizzato. Ma quando apportiamo modifiche qui, dovremmo assicurarci che le nostre modifiche vengano applicate in tutti i casi; quindi dobbiamo anche agganciarci <code>gform_admin_pre_render<\/code>(filtro pre_render corrispondente ma influisce sull&#8217;amministratore\/modifica del modulo), <code>gform_pre_validation<\/code>(responsabile della convalida del modulo prima dell&#8217;invio) e <code>gform_pre_submission_filter<\/code>(filtro dopo la convalida ma prima che l&#8217;immissione venga salvata). Non preoccuparti, utilizziamo la stessa funzione per tutti questi filtri.<\/p>\n<p>Puoi filtrarli direttamente oppure puoi fornire un trattino basso e l&#8217;ID modulo dopo il nome del filtro, per filtrare solo un modulo specifico. Ad esempio <code>gform_pre_render_1<\/code>, verrebbe eseguito solo su un modulo con ID modulo 1.<\/p>\n<p>Come argomento di tutti questi filtri ottieni l&#8217;oggetto modulo, in cui puoi ottenere l&#8217;ID modulo (metodo alternativo all&#8217;aggiunta dell&#8217;ID modulo al filtro) e tutti i suoi campi. I campi del modulo sono una matrice di <code>Field<\/code>oggetti, ma tutto ci\u00f2 di cui dobbiamo preoccuparci \u00e8 sostituire la <code>choices<\/code>propriet\u00e0 del campo corretto.<\/p>\n<h4>Cambiare le scelte<\/h4>\n<p>Il tipo di dati con cui vuoi sostituire le scelte dipende interamente da te, ma la <code>choices<\/code>propriet\u00e0 di un campo necessita di un array che abbia gli elementi &quot;testo&quot; e &quot;valore&quot;. Per esempio <code>['text' =&gt; 'Hello World!', 'value' =&gt; '1', 'text' =&gt; 'Second choice', 'value' =&gt; '2']<\/code>.<\/p>\n<pre><code>add_filter('gform_pre_render_1', 'awp_populate_choices');\nadd_filter('gform_pre_validation_1', 'awp_populate_choices');\nadd_filter('gform_pre_submission_filter_1', 'awp_populate_choices');\nadd_filter('gform_admin_pre_render_1', 'awp_populate_choices');\nfunction awp_populate_choices($form) {\n    foreach ($form['fields'] as &amp;$field) {\n        if ($field-&gt;inputName == 'awp_populate_me') {\n\u00a0\n            \/\/ Generate your data here. Below is just an example\n            $pages = get_posts('numberposts=-1&amp;post_status=publish&amp;post_type=page');\n\u00a0\n            \/\/ Generate a nice array that Gravity Forms can understand\n            $choices = [];\n            foreach ($pages as $page) {\n                $choices[] = ['text' =&gt; $page-&gt;post_title, 'value' =&gt; $page-&gt;ID];\n            }\n\u00a0\n            \/\/ Set choices to field\n            $field-&gt;choices = $choices;\n        }\n    }\n    return $form;\n}<\/code><\/pre>\n<p>Il codice precedente filtra solo l&#8217;ID modulo di 1. Inizia scorrendo i campi del modulo. \u00c8 importante notare la &quot;&#038;&quot; prima dell&#8217;elemento nel ciclo, che lo sta passando per riferimento. Ci\u00f2 significa che se apportiamo modifiche a <code>$field<\/code>, viene applicato e salvato direttamente nel file <code>$form['fields']<\/code>.<\/p>\n<p>Il secondo passaggio riguarda il campo che ha il nome del parametro che vogliamo scegliere come target. Per ogni campo questa \u00e8 la <code>inputName<\/code>propriet\u00e0. Puoi utilizzare altri metodi per scegliere come target i campi, ad esempio il suo ID (<code>id<\/code>) o la classe CSS (<code>cssClass<\/code>). Quando abbiamo trovato il nostro campo, dobbiamo generare l&#8217;array sostitutivo per le scelte e impostarlo <code>$field-&gt;choices<\/code>su questo. Nell&#8217;esempio sopra interrogo tutte le pagine e le scorre per generare un array formattato corretto.<\/p>\n<p>Non dimenticare di restituire <code>$form<\/code>alla fine, poich\u00e9 si tratta di un filtro.<\/p>\n<p>Vale la pena ricordare che questo filtro si applica anche al modulo di modifica (perch\u00e9 filtriamo <code>gform_admin_pre_render<\/code>). Ma ricorda che non puoi pi\u00f9 manipolare le scelte nella modifica del modulo: semplicemente non salver\u00e0 le modifiche perch\u00e9 questo codice lo sovrascriver\u00e0 sempre.<\/p>\n<h3>Popolamento delle caselle di controllo<\/h3>\n<p>Lo menzioner\u00f2 di nuovo; se sei semplicemente interessato a preselezionare una casella di controllo, segui la guida sopra per compilare un campo a valore singolo. Per quanto riguarda la sostituzione di tutte le scelte nelle caselle di controllo, il processo \u00e8 molto simile al popolamento di un pulsante di selezione o di opzione sopra, ma con alcune piccole differenze. Consiglio di guardare prima la spiegazione sopra per i pulsanti di selezione e di opzione.<\/p>\n<p>Usi gli stessi filtri e il processo di avvio \u00e8 lo stesso; scorri i campi del modulo e trovi quello che desideri. Tuttavia, con le caselle di controllo \u00e8 necessario sostituire due propriet\u00e0 nell&#8217;oggetto campo; <code>choices<\/code>e <code>inputs<\/code>. La <code>choices<\/code>propriet\u00e0 prevede la stessa matrice di un pulsante di selezione o di opzione.<\/p>\n<p>La <code>input<\/code>propriet\u00e0 prevede un array con elementi &#8216; <code>label<\/code>&#8216; e &#8216; <code>id<\/code>&#8216;. \u00c8 <code>label<\/code>autoesplicativo e dovrebbe essere identico <code>text<\/code>all&#8217;array delle scelte. L&#8217; <code>id<\/code>elemento deve seguire le regole dell&#8217;ID Gravity Forms; concatenando l&#8217;ID del campo, un punto e l&#8217;ID della scelta, iniziando con 1 (ad es. se l&#8217;ID del campo \u00e8 2 e l&#8217;ID della scelta \u00e8 3, il valore corretto <code>id<\/code>\u00e8 &#8221; <code>2.3<\/code>&#8220;).<\/p>\n<pre><code>add_filter('gform_pre_render_1', 'awp_populate_choices');\nadd_filter('gform_pre_validation_1', 'awp_populate_choices');\nadd_filter('gform_pre_submission_filter_1', 'awp_populate_choices');\nadd_filter('gform_admin_pre_render_1', 'awp_populate_choices');\nfunction awp_populate_choices($form) {\n    foreach ($form['fields'] as &amp;$field) {\n        if ($field-&gt;inputName == 'awp_populate_me') {\n\u00a0\n            \/\/ Generate your data here. Below is just an example\n            $pages = get_posts('numberposts=-1&amp;post_status=publish&amp;post_type=page');\n\u00a0\n            \/\/ Generate nice arrays that Gravity Forms can understand\n            $choices = [];\n            $inputs = [];\n            $input_id = 1;\n            foreach ($pages as $page) {\n                $choices[] = ['text' =&gt; $page-&gt;post_title, 'value' =&gt; $page-&gt;ID];\n                $inputs[] = ['label' =&gt; $page-&gt;post_title, 'id' =&gt; $field-&gt;id. '.'. $input_id];\n                $input_id++;\n            }\n\u00a0\n            \/\/ Set choices to field\n            $field-&gt;choices = $choices;\n            $field-&gt;inputs = $inputs;\n        }\n    }\n    return $form;\n}<\/code><\/pre>\n<p>Poich\u00e9 l&#8217;ID di scelta deve iniziare da 1, iniziamo una variabile contatore prima del ciclo e aggiungiamo 1 per ogni elemento nel ciclo, e lo usiamo insieme all&#8217;ID campo e un punto come <code>id<\/code>nell&#8217;array <code>inputs<\/code>.<\/p>\n<p>Quando abbiamo i nostri due array, li impostiamo sul campo <code>choices<\/code>e sulle <code>inputs<\/code>propriet\u00e0 e restituiamo il modulo modificato.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Una guida completa su come preselezionare o precompilare i campi in un modulo Gravity Forms e sostituire le scelte in un menu a discesa, pulsante di opzione o caselle di controllo.<\/p>\n","protected":false},"author":1,"featured_media":153487,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[896,896,720,835,1110,804,804,814,814,835,720,844,844,865,865],"tags":[1168],"class_list":["post-233457","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-sviluppatore","category-guida-per-principianti","category-n-a","category-php-6","category-plugin-2","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/233457","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=233457"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/233457\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/153487"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=233457"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=233457"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=233457"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}