¿Cómo mostrar datos de Gravity Forms en mi plantilla?
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' ); ?>

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)
.

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

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>

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

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!
