¿Cómo mostrar datos de Gravity Forms en mi plantilla?

23 ene 2013, 17:04:55
Vistas: 67.5K
Votos: 22

Prefacio

He instalado Gravity Forms, creé un formulario y los usuarios están enviando datos a mi sitio. Lo que quiero hacer es mostrar los datos que los usuarios están enviando a mi sitio en una de mis páginas.

Sé que existe el plugin Gravity Forms Directory. Pero esto solo proporciona una presentación de datos fija.

Pregunta

¿Hay algo en Gravity Forms que pueda hacer algo como esto? (código de ejemplo):

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

@GhostToast Créeme, revisé completamente la documentación y no hay ninguna información sobre cómo lograr esto.

hitautodestruct hitautodestruct
24 ene 2013 13:48:24

Nota desde el futuro: aquí hay un plugin diseñado específicamente para mostrar datos de Gravity Forms en el front-end: https://gravityview.co/

Dalton Rooney Dalton Rooney
6 ago 2014 01:11:36

Apuesto a que si publico esta pregunta en Stack Overflow me dirían que la publique aquí :-) Algo que ya me ha pasado con otra pregunta...

hitautodestruct hitautodestruct
26 feb 2017 11:45:00
Todas las respuestas a la pregunta 3
1
25

Puedes mirar la documentación, pero probablemente terminarás leyendo la documentación real: el código fuente.

Si lo haces, encontrarás que:

  • GFFormsModel::get_leads($form_id) devuelve una lista de entradas para un formulario (quizás ya lo sabías), donde cada elemento del arreglo es en sí mismo un arreglo, un "objeto Entry"
  • GFFormsModel::get_form_meta($form_id) devuelve una lista de elementos meta de campos (es decir, describe el nombre, tipo, reglas, etc.) en el formulario, donde cada elemento del arreglo es un "objeto Field"

Una vez que tienes un objeto Entry, puedes acceder a los campos como elementos, por número de campo. Si necesitas encontrar un campo por nombre o tipo, debes iterar sobre la lista de campos en el formulario para obtener una coincidencia, y luego acceder al campo de la entrada por ID de campo.

Nota: la mejor manera de determinar el tipo de un campo es pasando el elemento meta del campo a GFFormsModel::get_input_type($field)

Edición: ten en cuenta también que solo los primeros 200 caracteres de cada campo se devuelven en el objeto Entry. Si tienes campos que almacenan más información, deberás solicitarla, por ejemplo llamando a GFFormsModel::get_field_value_long($lead, $field_number, $form).

24 ene 2013 12:00:13
Comentarios

Para tu información, un administrador de Gravity Forms publicó este fragmento para un shortcode http://pastebin.com/kHpaHQvi también.

hitautodestruct hitautodestruct
29 ene 2013 11:27:57
3
21

Gracias a webaware por su respuesta.

Aquí hay un fragmento para copiar/pegar para cualquiera que busque un inicio rápido. Esto toma un ID de entrada y recupera el lead y el formulario correspondiente. En este caso estoy usando la URL para pasar el valor. Ejemplo: midominio.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>
19 may 2013 02:22:58
Comentarios

Tu código es genial pero no funcionará para Advanced fields como el address o el first name/last name ya que usan . para dividir su ID

RPDeshaies RPDeshaies
30 sept 2014 21:58:19

Tampoco funcionará en checkboxes.

numediaweb numediaweb
19 jul 2015 14:35:21

¿Cómo obtener la información del usuario que publicó la entrada?

John John
10 feb 2016 17:32:59
1

Podrías usar un hook gform_after_submission para escribir todo lo que necesitas en un tipo de publicación personalizado, lo cual podría ser más fácil de manipular "en el campo", y estará a salvo de, por ejemplo, que alguien elimine un solo campo y borre todos los datos asociados con él.

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

Yoast tiene una buena explicación sobre cómo escribir en campos personalizados, incluso sin usar el hook. http://yoast.com/gravity-forms-custom-post-types/

¡Buena suerte!

24 ene 2013 16:56:39
Comentarios

Duplicar datos de esta manera parece un poco desagradable.

Felix Eve Felix Eve
18 sept 2014 10:01:37