Как отобразить данные из Gravity Forms в моём шаблоне?

23 янв. 2013 г., 17:04:55
Просмотры: 67.5K
Голосов: 22

Предисловие

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

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

Вопрос

Есть ли в Gravity Forms что-то, что может сделать что-то подобное? (псевдокод):

<?php gforms_get_field( $form_id, $entry_id, 'user_name_field' ); ?>
4
Комментарии

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

GhostToast GhostToast
23 янв. 2013 г. 17:21:59

@GhostToast Поверь мне, я тщательно изучил документацию, и там нет никакой информации о том, как этого добиться.

hitautodestruct hitautodestruct
24 янв. 2013 г. 13:48:24

Заметка из будущего: вот плагин, который специально предназначен для отображения данных Gravity Forms на фронтенде: https://gravityview.co/

Dalton Rooney Dalton Rooney
6 авг. 2014 г. 01:11:36

Готов поспорить, что если я задам этот вопрос на SO, мне скажут разместить его здесь :-) Что уже случалось с другим вопросом..

hitautodestruct hitautodestruct
26 февр. 2017 г. 11:45:00
Все ответы на вопрос 3
1
25

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

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

  • GFFormsModel::get_leads($form_id) возвращает список записей формы (возможно, вы уже знаете эту функцию), где каждый элемент массива сам является массивом — "объектом Entry"
  • GFFormsModel::get_form_meta($form_id) возвращает список мета-элементов полей формы (т.е. описывает имя, тип, правила и т.д.), где каждый элемент массива является "объектом Field"

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

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

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

24 янв. 2013 г. 12:00:13
Комментарии

К вашему сведению, администратор Gravity Forms также опубликовал этот сниппет для шорткода http://pastebin.com/kHpaHQvi.

hitautodestruct hitautodestruct
29 янв. 2013 г. 11:27:57
3
21

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

Вот готовый код для тех, кто ищет быстрое решение. Этот код принимает ID записи и извлекает данные формы по этому ID. В данном примере я использую 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>
19 мая 2013 г. 02:22:58
Комментарии

Ваш код отличный, но не будет работать для Advanced fields, таких как address или first name/last name, поскольку они используют . для разделения своего ID

RPDeshaies RPDeshaies
30 сент. 2014 г. 21:58:19

Также не будет работать с чекбоксами.

numediaweb numediaweb
19 июл. 2015 г. 14:35:21

Как получить информацию о пользователе, который добавил запись?

John John
10 февр. 2016 г. 17:32:59
1

Вы можете использовать хук gform_after_submission, чтобы записать все необходимые данные в произвольный тип записи (custom post type). Это может быть удобнее для манипуляций "в полевых условиях" и защитит данные от случайного удаления, например, если кто-то удалит отдельное поле и потеряет все связанные с ним данные.

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

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

Удачи!

24 янв. 2013 г. 16:56:39
Комментарии

Дублирование данных в таком виде выглядит несколько неаккуратно.

Felix Eve Felix Eve
18 сент. 2014 г. 10:01:37