web-dev-qa-db-ja.com

テンプレートに重力フォームのデータを表示する方法

序文

私はグラビティフォームをインストールし、フォームを作成し、ユーザーが私のサイトにデータを送信しています。私がやりたいことは、ユーザーが自分のページに自分のサイトに送信しているデータを表示することです。

Gravity Forms Directory pluginがあることを私は知っています。しかし、これは固定されたデータ表示のみを提供します。

質問

重力の形でこのようなことができるものはありますか? (疑似コード)

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

あなたはドキュメントを見ることができます、しかしおそらくあなたは real ドキュメントを読むことになるでしょう:ソースコード。

あなたがそうするならば、あなたはそれを見つけるでしょう:

  • GFFormsModel::get_leads($form_id)はフォームのエントリのリストを返します(おそらくあなたはそれをすでに知っているでしょう)、ここで配列の各項目はそれ自体が配列、 " Entry object "
  • GFFormsModel::get_form_meta($form_id)はフィールドのメタ要素のリスト(名前、型、規則などを記述する)をフォームに返します。ここで、配列の各項目は " フィールドオブジェクト "です。

Entryオブジェクトを取得したら、フィールド番号によって要素としてフィールドにアクセスできます。名前またはタイプでフィールドを見つける必要がある場合は、フォーム内のフィールドのリストを繰り返し検索して一致させ、次にフィールドIDでエントリのフィールドにアクセスする必要があります。

注意:フィールドの型を決定するには、フィールドのmeta要素をGFFormsModel::get_input_type($field)に渡すことが一番です。

編集:各フィールドの最初の200文字だけがEntryオブジェクトに返されることにも注意してください。より多くの情報を格納するフィールドがある場合は、それを要求する必要があります。 GFFormsModel::get_field_value_long($lead, $field_number, $form)を呼び出すことによって。

23
webaware

回答を寄せてくれたwebawareに感謝します。

これはクイックスタートを探している人のためのコピー/パスタです。これはエントリー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>
21
patnz

gform_after_submissionフックを使用して必要なものすべてをカスタム投稿タイプに書き込むことができます。これは、「現場で」操作するのがより簡単である可能性があります。それ。

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

Yoastは、フックを使用しなくても、カスタムフィールドへの書き込みについてかなり良い説明をしています。 http://yoast.com/gravity-forms-custom-post-types/ /

がんばろう!

1
GhostToast