2015-09-16 17 views
7

Nie znam haków grawitacyjnych. Utworzyłem 2 formularze procesu rejestracji, które są wyświetlane w jednym modalu, ale wywoływane w różnych elementach div. Chciałem wysłać te dane z 2 formularzy do aplikacji zewnętrznej, przesyłając dane wejściowe gform_after_submission do strony trzeciej po przesłaniu konkretnego formularza (ostatni formularz).Formularze grawitacji wysyłające dane wejściowe połączone z wielu formularzy do stron trzecich po przesłaniu określonego formularza

Jednak ten sposób:

add_action('gform_after_submission_2', 'post_to_third_party', 10, 2); 
    function post_to_third_party($entry, $form) { 

    $post_url = 'http://thirdparty.com'; 
    $body = array(
     'first_name' => rgar($entry, '1.3'), 
     'last_name' => rgar($entry, '1.6'), 
     'message' => rgar($entry, '3'), 
    ); 

    $request = new WP_Http(); 
    $response = $request->post($post_url, array('body' => $body)); 
} 

tylko pozwoli mi uzyskać wpis z pola id formie określonej.

Jak to możliwe, że otrzymam zgłoszenia również z innych formularzy, abym mógł dołączyć i opublikować adres URL strony trzeciej?

Dzięki.

+0

Musisz znać identyfikatory wpisów, aby móc je pobrać przez GFAPI :: get_entry ($ entry_id). – David

+0

czy otrzymuje także wpisy z innych formularzy? –

+0

Tak. Otrzyma dowolne dane z dowolnej formy, jeśli znasz identyfikator wpisu. – David

Odpowiedz

1

Ponieważ jesteś podając identyfikator formularza w samej add_action, tylko są uruchomione swoją funkcję, gdy Gravity Form o identyfikatorze 2 zostanie przesłany. Jeśli chcesz go uruchomić na wielu zgłoszeń, ale ograniczyć je do konkretnych identyfikatorów formularza, następnie coś więcej tak:

add_action('gform_after_submission', 'post_to_third_party', 10, 2); 
    function post_to_third_party($entry, $form) { 

    if($form->id == 2 || $form->id == somenumber) { 
     $post_url = 'http://thirdparty.com'; 
     $body = array(
      'first_name' => rgar($entry, '1.3'), 
      'last_name' => rgar($entry, '1.6'), 
      'message' => rgar($entry, '3'), 
     ); 

     $request = new WP_Http(); 
     $response = $request->post($post_url, array('body' => $body)); 
    } 
} 

Być może trzeba użyć $form['id'] w przypadku nie mają do czynienia z obiektem. Jeden z nich zadziała. Minusem jest to, że musisz znać identyfikator formularzy, z którymi chcesz pracować. Można to łatwo znaleźć w backendie podczas przeglądania tabeli utworzonych formularzy, ale tak właśnie jest ...

0

Jeśli zapisujesz formularz danych na tym samym stanowisku może można uzyskać datę na podstawie postu id