Как мне отобразить данные из гравитационных форм в моем шаблоне? [закрыто]
Предисловие
Я установил гравитацию формы, создал форму, и пользователи отправляют данные на мой сайт. Что я хочу сделать, так это показать данные, которые пользователи отправляют на мой сайт, на одной из моих страниц.
Я знаю, что есть плагин Каталог гравитационных форм . Но это дает только фиксированное представление данных.
Вопрос
Есть ли что-нибудь в гравитационных формах, что может сделать что-то подобное? (псевдокод):
<?php gforms_get_field( $form_id, $entry_id, 'user_name_field' ); ?>
3 answers
Вы можете посмотреть документы, но, вероятно, в конечном итоге вы прочтете реальную документацию: исходный код.
Если вы это сделаете, то обнаружите, что:
-
GFFormsModel::get_leads($form_id)
возвращает список записей для формы (возможно, вы уже знаете эту форму), где каждый элемент в массиве сам по себе является массивом, объектом записи "" -
GFFormsModel::get_form_meta($form_id)
возвращает список метаэлементов поля (т.е. Описывает имя, тип, правила и т.д.) в форме, где каждый элемент в массиве является полем " объект"
Как только у вас есть объект ввода, вы можете получить доступ к полям как к элементам по номеру поля. Если вам нужно найти поле по имени или типу, вам необходимо выполнить итерацию по списку полей в форме, чтобы получить совпадение, а затем получить доступ к полю записи по идентификатору поля.
ПРИМЕЧАНИЕ: определение типа поля лучше всего выполнять, передавая мета-элемент поля в GFFormsModel::get_input_type($field)
Изменить: обратите также внимание, что в объекте ввода возвращаются только первые 200 символов каждого поля. Если у вас есть поля, в которых хранится дополнительная информация, вам нужно будет запросить ее, например, позвонив GFFormsModel::get_field_value_long($lead, $field_number, $form)
.
Спасибо webaware за их ответ.
Вот несколько копий/макарон для тех, кто хочет быстро начать. Это берет идентификатор записи и извлекает из него интерес и форму. В этом случае я использую URL-адрес для передачи значения. например, somedomain.com?запись=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>
Вы можете использовать крючок gform_after_submission
, чтобы записать все, что вам нужно, в пользовательский тип записи, которым, возможно, будет проще манипулировать "в поле", и он будет защищен, скажем, от того, что кто-то удалит одно поле и уничтожит все данные, связанные с ним.
Http://www.gravityhelp.com/documentation/page/Gform_after_submission
У Yoast есть довольно хорошая запись о записи в пользовательские поля, даже без использования крюк. http://yoast.com/gravity-forms-custom-post-types/
Удачи!