Come visualizzare i dati di Gravity Forms nel mio template?
Premessa
Ho installato Gravity Forms, creato un form e gli utenti stanno inviando dati al mio sito. Quello che voglio fare è mostrare i dati che gli utenti stanno inviando al mio sito in una delle mie pagine.
So che esiste il plugin Gravity Forms Directory. Ma questo fornisce solo una presentazione dei dati fissa.
Domanda
C'è qualcosa in Gravity Forms che può fare qualcosa del genere? (pseudo codice):
<?php gforms_get_field( $form_id, $entry_id, 'user_name_field' ); ?>

Puoi consultare la documentazione, ma probabilmente finirai per leggere la documentazione reale: il codice sorgente.
Se lo fai, scoprirai che:
GFFormsModel::get_leads($form_id)
restituisce un elenco di voci per un modulo (forse lo conosci già), dove ogni elemento dell'array è a sua volta un array, un "Oggetto Entry"GFFormsModel::get_form_meta($form_id)
restituisce un elenco di elementi meta dei campi (cioè descrive nome, tipo, regole ecc.) nel modulo, dove ogni elemento dell'array è un "Oggetto Field"
Una volta che hai un oggetto Entry, puoi accedere ai campi come elementi, tramite il numero del campo. Se hai bisogno di trovare un campo per nome o tipo, devi iterare sull'elenco dei campi nel modulo per ottenere una corrispondenza, e poi accedere al campo della voce tramite l'ID del campo.
NB: determinare il tipo di un campo è meglio farlo passando l'elemento meta del campo a GFFormsModel::get_input_type($field)
Modifica: nota anche che solo i primi 200 caratteri di ogni campo vengono restituiti nell'oggetto Entry. Se hai campi che memorizzano più informazioni, dovrai richiederle, ad esempio chiamando GFFormsModel::get_field_value_long($lead, $field_number, $form)
.

Per tua informazione, un amministratore di Gravity Forms ha pubblicato questo snippet per uno shortcode http://pastebin.com/kHpaHQvi anche.

Grazie a webaware per la loro risposta.
Ecco del codice pronto per chi cerca una soluzione rapida. Questo codice prende un ID di entry e recupera i dati principali e il form associato. In questo caso sto usando l'URL per passare il valore, ad esempio: miosito.com?entry=123.
<?php
$lead_id = $_GET['entry'];
$lead = RGFormsModel::get_lead( $lead_id );
$form = GFFormsModel::get_form_meta( $lead['form_id'] );
$values= array();
foreach( $form['fields'] as $field ) {
$values[$field['id']] = array(
'id' => $field['id'],
'label' => $field['label'],
'value' => $lead[ $field['id'] ],
);
}
?>
<pre><?php print_r($values); ?></pre>

Il tuo codice è ottimo ma non funzionerà per i campi avanzati
come l'indirizzo
o il nome/cognome
poiché utilizzano il .
per separare il loro ID

Potresti utilizzare un hook gform_after_submission
per scrivere tutto ciò che ti serve in un custom post type, il che potrebbe essere più facile da manipolare "sul campo", e sarà al sicuro da, ad esempio, qualcuno che cancella un singolo campo e cancella tutti i dati associati ad esso.
http://www.gravityhelp.com/documentation/page/Gform_after_submission
Yoast ha una buona guida su come scrivere nei custom fields, senza nemmeno usare l'hook. http://yoast.com/gravity-forms-custom-post-types/
Buona fortuna!
