Come faccio a mostrare i dati dai moduli di gravità nel mio modello? [chiuso]


21

Prefazione

Ho installato moduli di gravità, creato un modulo e gli utenti stanno inviando dati al mio sito. Quello che voglio fare è mostrare i dati che gli utenti inviano al mio sito su una delle mie pagine.

So che c'è il plugin Gravity Forms Directory . Ma questo dà solo una presentazione dati fissa.

Domanda

C'è qualcosa nelle forme di gravità che può fare qualcosa del genere? (pseudo codice) :

<?php gforms_get_field( $form_id, $entry_id, 'user_name_field' ); ?>


2
@GhostToast Credimi, ho completamente pettinato la documentazione e non ci sono informazioni su come raggiungere questo obiettivo.
hitautodestruct

1
Nota dal futuro: ecco un plugin che è esplicitamente per la visualizzazione dei dati di Gravity Forms sul front-end: gravityview.co
Dalton,

2
Scommetto che se avessi pubblicato questa domanda su SO mi avrebbero detto di
postarla

Risposte:


25

Puoi guardare i documenti, ma probabilmente finirai per leggere la vera documentazione: il codice sorgente.

Se lo fai, troverai che:

  • GFFormsModel::get_leads($form_id)restituisce un elenco di voci per un modulo (forse lo sapete già), in cui ogni elemento dell'array è esso stesso un array, un " oggetto Entry "
  • GFFormsModel::get_form_meta($form_id)restituisce un elenco di meta elementi di campo (ovvero descrive nome, tipo, regole, ecc.) nel modulo, in cui ciascun elemento dell'array è un " oggetto campo "

Una volta che hai un oggetto Entry, puoi accedere ai campi come elementi, per numero di campo. Se è necessario trovare un campo per nome o tipo, è necessario scorrere l'elenco dei campi nel modulo per ottenere una corrispondenza, quindi accedere al campo della voce per ID campo.

NB: la determinazione del tipo di un campo viene eseguita meglio passando il meta elemento del campo a GFFormsModel::get_input_type($field)

Modifica: si noti inoltre che solo i primi 200 caratteri di ciascun campo vengono restituiti nell'oggetto Entry. Se disponi di campi in cui sono memorizzate ulteriori informazioni, dovrai richiederle, ad esempio chiamando GFFormsModel::get_field_value_long($lead, $field_number, $form).


1
Cordiali saluti, Un amministratore di Gravity Forms ha pubblicato questo frammento anche per un shortcode pastebin.com/kHpaHQvi .
Hitautodestruct

21

Grazie al webaware per la loro risposta.

Ecco un po 'di copia / pasta per chiunque cerchi un avvio rapido. Questo prende un ID voce e recupera il lead e il modulo da quello. In questo caso sto usando l'URL per passare il valore. ad esempio somedomain.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>

1
Il codice è ottimo ma non funzionerà Advanced fieldscome il addresso il first name/last namepoiché stanno usando .per dividere il loro ID
RPDeshaies

Inoltre non funzionerà nei chckbox.
numediaweb,

Come ottenere le informazioni sull'utente che pubblicano la voce?
Giovanni,

1

Puoi usare un gform_after_submissionhook per scrivere tutto il necessario in un tipo di post personalizzato, che potrebbe essere più facile da manipolare "fuori dal campo", e sarà al sicuro, per esempio, da qualcuno che cancella un singolo campo e cancella tutti i dati ad esso associati .

http://www.gravityhelp.com/documentation/page/Gform_after_submission

Yoast ha una scrittura abbastanza buona sulla scrittura in campi personalizzati, senza nemmeno usare l'hook. http://yoast.com/gravity-forms-custom-post-types/

In bocca al lupo!


1
La duplicazione di dati come questo sembra un po 'brutta.
Felix Eve,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.