Jak wyświetlić dane z formularzy grawitacyjnych w moim szablonie? [Zamknięte]

21

Przedmowa

Zainstalowałem formularze grawitacyjne, utworzyłem formularz, a użytkownicy przesyłają dane do mojej witryny. Chcę pokazać dane przesyłane przez użytkowników do mojej witryny na jednej z moich stron.

Wiem, że jest wtyczka Gravity Forms Directory . Ale to daje tylko stałą prezentację danych.

Pytanie

Czy jest coś w formach grawitacyjnych, które mogą zrobić coś takiego? (pseudo kod) :

<?php gforms_get_field( $form_id, $entry_id, 'user_name_field' ); ?>
hitautodestruct
źródło
2
@GhostToast Uwierz mi, że całkowicie przeczesałem dokumenty i nie ma żadnych informacji, jak to osiągnąć.
hitautodestruct
1
Uwaga z przyszłości: oto wtyczka, która jest wyraźnie przeznaczona do wyświetlania danych Gravity Forms na interfejsie: gravityview.co
Dalton
2
Założę się, że jeśli opublikuję to pytanie na SO, powiedzą mi, żebym opublikował je tutaj :-) Coś, co już się stało z innym pytaniem ..
hitautodestruct

Odpowiedzi:

25

Możesz spojrzeć na dokumenty, ale prawdopodobnie skończysz czytając prawdziwą dokumentację: kod źródłowy.

Jeśli to zrobisz, przekonasz się, że:

  • GFFormsModel::get_leads($form_id)zwraca listę wpisów do formularza (być może już go znasz), gdzie każdy element w tablicy jest tablicą, „ obiektem wpisu
  • GFFormsModel::get_form_meta($form_id)zwraca listę elementów meta pola (tj. opisuje nazwę, typ, reguły itp.) w formie, w której każdy element w tablicy jest „ obiektem pola

Po uzyskaniu obiektu Entry możesz uzyskać dostęp do pól jako elementów według numeru pola. Jeśli chcesz znaleźć pole według nazwy lub typu, musisz iterować listę pól w formularzu, aby uzyskać dopasowanie, a następnie uzyskać dostęp do pola wpisu według identyfikatora pola.

Uwaga: najlepiej określić typ pola, przekazując meta element pola do GFFormsModel::get_input_type($field)

Edycja: pamiętaj również, że tylko pierwszych 200 znaków z każdego pola jest zwracanych w obiekcie Entry. Jeśli masz pola, które przechowują więcej informacji, musisz o nie poprosić, np GFFormsModel::get_field_value_long($lead, $field_number, $form). Dzwoniąc .

webaware
źródło
1
Do Twojej wiadomości, administrator Gravity Forms opublikował ten fragment kodu również dla shortcode pastebin.com/kHpaHQvi .
hitautodestruct
21

Dzięki webaware za odpowiedź.

Oto kopia / makaron dla każdego, kto szuka szybkiego startu. Pobiera identyfikator wpisu i pobiera z niego potencjalną szansę i formularz. W tym przypadku używam adresu URL do przekazania wartości. np. 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
źródło
1
Ci kod jest wielki, ale przyzwyczajenie praca dla Advanced fieldslubią addressalbo first name/last nameponieważ są one za pomocą .podzielić swój identyfikator
RPDeshaies
Również nie będzie działać w chckboxach.
numediaweb
Jak uzyskać informacje o użytkowniku, który publikuje wpis?
Jan
1

Możesz użyć gform_after_submissionhaka, aby napisać wszystko, czego potrzebujesz do niestandardowego typu postu, co może być łatwiejsze do manipulowania „poza polem” i będzie bezpieczne, powiedzmy, od kogoś, kto usunie jedno pole i usunie wszystkie powiązane z nim dane .

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

Yoast ma całkiem niezły opis pisania na niestandardowych polach, nawet bez użycia haka. http://yoast.com/gravity-forms-custom-post-types/

Powodzenia!

GhostToast
źródło
1
Powielanie takich danych wydaje się nieco nieprzyjemne.
Felix Eve