Cum afișez date din gravity forms în șablonul meu?
Prefață
Am instalat Gravity Forms, am creat un formular și utilizatorii trimit date către site-ul meu. Ceea ce doresc să fac este să afișez datele pe care utilizatorii le trimit către site-ul meu pe una dintre paginile mele.
Știu că există plugin-ul Gravity Forms Directory. Dar acesta oferă doar o prezentare fixă a datelor.
Întrebare
Există ceva în Gravity Forms care poate face ceva de genul acesta? (cod pseudo):
<?php gforms_get_field( $form_id, $entry_id, 'user_name_field' ); ?>

Poți consulta documentația, dar cel mai probabil vei ajunge să citești adevărata documentație: codul sursă.
Dacă o faci, vei descoperi că:
GFFormsModel::get_leads($form_id)
returnează o listă de intrări pentru un formular (poate că deja știi asta), unde fiecare element din matrice este la rândul său o matrice, un "Obiect Entry"GFFormsModel::get_form_meta($form_id)
returnează o listă de elemente meta ale câmpurilor (adică descrie numele, tipul, regulile etc.) din formular, unde fiecare element din matrice este un "Obiect Field"
Odată ce ai un Obiect Entry, poți accesa câmpurile ca elemente, după numărul câmpului. Dacă trebuie să găsești un câmp după nume sau tip, va trebui să parcurgi lista de câmpuri din formular pentru a găsi o potrivire, iar apoi să accesezi câmpul din intrare după ID-ul câmpului.
NB: determinarea tipului unui câmp se face cel mai bine prin transmiterea elementului meta al câmpului către GFFormsModel::get_input_type($field)
Edit: de asemenea, reține că în Obiectul Entry sunt returnate doar primele 200 de caractere din fiecare câmp. Dacă ai câmpuri care stochează mai multe informații, va trebui să le ceri explicit, de exemplu apelând GFFormsModel::get_field_value_long($lead, $field_number, $form)
.

FYI, Un administrator Gravity Forms a postat acest fragment de cod pentru un shortcode http://pastebin.com/kHpaHQvi de asemenea.

Mulțumiri către webaware pentru răspunsul lor.
Iată câteva informații rapide pentru cei care caută un punct de plecare. Acest cod preia un ID de intrare și recuperează datele și formularul asociate. În acest caz, folosesc URL-ul pentru a transmite valoarea. De exemplu: somedomeniu.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>

Codul tău este grozav, dar nu va funcționa pentru Câmpuri avansate
precum adresa
sau nume/prenume
deoarece acestea folosesc .
pentru a separa ID-ul lor

Ai putea folosi un hook gform_after_submission
pentru a scrie tot ce ai nevoie într-un tip de postare personalizată, ceea ce ar putea fi mai ușor de manipulat "pe teren" și va fi protejat de, să zicem, ștergerea unui singur câmp și pierderea tuturor datelor asociate cu acesta.
http://www.gravityhelp.com/documentation/page/Gform_after_submission
Yoast are un ghid destul de bun despre scrierea în câmpuri personalizate, fără a folosi nici măcar hook-ul. http://yoast.com/gravity-forms-custom-post-types/
Mult succes!
