Как показать данные из гравитационных форм в моем шаблоне? [закрыто]

21

Предисловие

Я установил гравитационные формы, создал форму, и пользователи отправляют данные на мой сайт. Что я хочу сделать, это показать данные, которые пользователи отправляют на мой сайт на одной из моих страниц.

Я знаю, что есть плагин Gravity Forms Directory . Но это дает только фиксированное представление данных.

Вопрос

Есть ли что-нибудь в гравитационных формах, которые могут сделать что-то подобное? (псевдокод) :

<?php gforms_get_field( $form_id, $entry_id, 'user_name_field' ); ?>
hitautodestruct
источник
2
@GhostToast Поверьте мне, я полностью прочесал документы, и нет никакой информации о том, как этого добиться.
hitautodestruct
1
Примечание из будущего: вот плагин, который явно предназначен для отображения данных Gravity Forms на внешнем интерфейсе
Dalton
2
Могу поспорить, что если бы я разместил этот вопрос на SO, они бы сказали, чтобы я разместил его здесь :-) Что-то, что уже произошло с другим вопросом ..
hitautodestruct

Ответы:

25

Вы можете посмотреть документы, но, вероятно, в конечном итоге вы прочитаете настоящую документацию: исходный код.

Если вы это сделаете, вы обнаружите, что:

  • GFFormsModel::get_leads($form_id)возвращает список записей для формы (может быть, вы уже знаете это), где каждый элемент в массиве сам является массивом, « объектом ввода »
  • GFFormsModel::get_form_meta($form_id)возвращает список метаэлементов поля (т.е. описывает имя, тип, правила и т. д.) в форме, где каждый элемент в массиве является « объектом поля »

Если у вас есть объект Entry, вы можете получить доступ к полям как элементам по номеру поля. Если вам нужно найти поле по имени или типу, вам нужно перебрать список полей в форме, чтобы найти совпадение, а затем получить доступ к полю записи по идентификатору поля.

Примечание: определение типа поля лучше всего сделать, передав метаэлемент поля GFFormsModel::get_input_type($field)

Редактировать: обратите внимание также, что только первые 200 символов каждого поля возвращаются в объекте Entry. Если у вас есть поля, в которых хранится дополнительная информация, вам необходимо запросить ее, например, позвонив по телефону GFFormsModel::get_field_value_long($lead, $field_number, $form).

webaware
источник
1
К вашему сведению, администратор Gravity Forms также опубликовал этот фрагмент для шорткода pastebin.com/kHpaHQvi .
Hitautodestruct
21

Спасибо webaware за ответ.

Вот некоторые копии / макароны для тех, кто ищет быстрый старт. Это берет идентификатор записи и извлекает лидерство и форму из этого. В этом случае я использую URL для передачи значения. например, 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>
patnz
источник
1
Ваш код великолепен, но он не будет работать для Advanced fieldsтого addressили first name/last name.
иного типа,
Также не будет работать в chckboxes.
numediaweb
Как получить информацию о пользователе, который разместил запись?
Джон
1

Вы можете использовать gform_after_submissionловушку для записи всего, что вам нужно, в пользовательский тип записи, который может быть легче манипулировать «вне поля», и будет безопасен, скажем, от того, что кто-то удалит одно поле и уничтожит все данные, связанные с ним ,

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

У Yoast довольно хорошая запись при записи в пользовательские поля, даже без использования ловушки. http://yoast.com/gravity-forms-custom-post-types/

Удачи!

GhostToast
источник
1
Дублирование таких данных кажется немного неприятным.
Феликс Ив