Як у моєму шаблоні відображати дані гравітаційних форм? [зачинено]


21

Передмова

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

Я знаю, що існує плагін Gravity Forms Directory . Але це дає лише фіксовану презентацію даних.

Питання

Чи є щось у гравітаційних формах, що може зробити щось подібне? (псевдокод) :

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


2
@GhostToast Повірте, я повністю розчесав документи і немає жодної інформації, як цього досягти.
hitautodestruct

1
Зауважте з майбутнього: ось плагін, який явно відображає дані Gravity Forms на передній панелі: gravityview.co
Далтон,

2
Б'юсь об заклад, що якщо я опублікував це питання на ТАК, вони б сказали мені, щоб це було тут :-) Щось, що вже сталося з іншим питанням ..
hitautodestruct

Відповіді:


25

Ви можете подивитися на документи, але ви, ймовірно, прочитаєте справжню документацію: вихідний код.

Якщо ви зробите це, ви побачите, що:

  • GFFormsModel::get_leads($form_id)повертає список записів для форми (можливо, ви вже знаєте, що така вже є), де кожен елемент масиву є самим масивом, " об'єкт введення" "
  • GFFormsModel::get_form_meta($form_id)повертає список металевих елементів поля (тобто описує ім'я, тип, правила тощо) у формі, де кожен елемент масиву є " об'єктом поля "

Коли у вас є об'єкт Entry, ви можете отримати доступ до полів як елементи за номером поля. Якщо вам потрібно знайти поле за назвою чи типом, вам потрібно перебрати список полів у формі, щоб отримати збіг, а потім отримати доступ до поля запису за ідентифікатором поля.

Примітка: визначення типу поля найкраще проводити шляхом передачі металевого поля в GFFormsModel::get_input_type($field)

Редагувати: зауважте також, що в об'єкт "Введення" повертаються лише перші 200 символів кожного поля. Якщо у вас є поля, в яких зберігається додаткова інформація, вам потрібно буде запитати її, наприклад, зателефонувавши GFFormsModel::get_field_value_long($lead, $field_number, $form).


1
FYI, адміністратор 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>

1
Код є чудовим, але ви не працюєте на Advanced fieldsзразок того addressчи іншого, first name/last nameоскільки вони використовують, .щоб розділити свій ідентифікатор
RPDeshaies

Також не працюватимуть у chckboxes.
numediaweb

Як отримати інформацію про користувача, який публікує запис?
Іван

1

Ви можете використовувати gform_after_submission гачок, щоб записати все, що потрібно, до спеціального типу публікації, що може бути простішим в маніпулюванні "поза полем" і захищене від, скажімо, когось видалення одного поля та видалення всіх пов'язаних з ним даних. .

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

Yoast має досить хороший запис на написання у користувацькі поля, навіть не використовуючи гачок. http://yoast.com/gravity-forms-custom-post-types/

Удачі!


1
Дублювання подібних даних здається трохи неприємним.
Фелікс Єва
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.