2026年11月12日
2026年11月12日
Gravity Forms: tworzenie formularzy, logika warunkowa i powiadomienia
Ten artykuł jest zlokalizowaną wersją japońskiego oryginału. Przeczytaj japoński oryginał
Gravity Forms to płatna wtyczka do formularzy, której nie ma w WordPress.org. Z poziomu panelu administracyjnego skonfigurujesz w niej „logikę warunkową", czyli wyświetlanie pól zależnie od warunków, kierowanie powiadomień do różnych adresatów w zależności od treści zgłoszenia oraz zapisywanie w bazie danych i eksport przesłanych danych (wpisów, entries). W tym artykule opisuję podstawy tworzenia formularza oraz użycie hooków dla programistów. Zakres licencji i nazwy pozycji na ekranach sprawdziłem na oficjalnej stronie Gravity Forms i w dokumentacji (po angielsku) według stanu na listopad 2026. Ekrany opisuję z angielskimi nazwami pozycji. Jeśli panel masz po polsku, zapis może się różnić.
Licencje i dostępne dodatki
Od licencji zależy liczba witryn i dostępne dodatki.
| Licencja | Liczba witryn | Główne dodatki |
|---|---|---|
| Basic | 1 | Podstawowe dodatki, takie jak Mailchimp, HubSpot, reCAPTCHA |
| Pro | 3 | Oprócz zawartości Basic m.in. Stripe, PayPal Checkout, Square, Zapier, Slack |
| Elite | Bez limitu | Wszystkie dodatki (Webhooks, User Registration, Signature, Survey itd.). Obsługuje też multisite |
Dodatek Webhooks, który wysyła przesłane dane do zewnętrznych systemów, jest dostępny tylko w licencji Elite (i w licencji dla organizacji non-profit). Dodatki płatnicze Stripe i PayPal Checkout są dostępne od Pro wzwyż. Przed zakupem sprawdź na oficjalnej stronie z cennikiem, w której licencji jest potrzebny Ci dodatek.
Instalacja i rejestracja klucza licencyjnego
Pobierz plik ZIP wtyczki ze strony konta na oficjalnej stronie Gravity Forms, zainstaluj go w „Wtyczki → Dodaj nową → Wyślij wtyczkę na serwer" (Plugins → Add New → Upload Plugin) i włącz. Jeśli używasz WP-CLI, zrób to tak:
wp plugin install /path/to/gravityforms.zip --activate
Klucz licencyjny wpisz na ekranie „Forms → Settings". Gdy tę samą konfigurację rozdzielasz na wiele środowisk, możesz też zapisać go jako stałą w wp-config.php. Po zapisaniu stałej pole klucza licencyjnego na ekranie ustawień nie da się edytować.
define( 'GF_LICENSE_KEY', 'YOUR-LICENSE-KEY-HERE' );
Utwórz formularz i umieść go na stronie
- W panelu administracyjnym otwórz „Forms → New Form", nadaj nazwę formularzowi i utwórz go.
- Z „Add Fields" po prawej stronie umieść pola, takie jak nazwisko (Name), adres e-mail (Email), numer telefonu (Phone), lista wyboru (Drop Down), treść (Paragraph Text), zgoda (Consent).
- Po kliknięciu pola otwierają się jego ustawienia. W polach obowiązkowych włącz „Required".
- Zapisz przez „Save Form".
Aby umieścić formularz na stronie, w edytorze blokowym dodaj blok „Gravity Forms" i wybierz utworzony formularz. Jeśli umieszczasz go shortcode'em, użyj poniższej postaci, gdzie id to identyfikator formularza widoczny na liście formularzy.
[gravityform id="1" title="false"]
Wyświetlanie pól warunkowo dzięki logice warunkowej
Takie rzeczy jak „pole do wgrania CV pokazuj tylko wtedy, gdy rodzaj zapytania to «Rekrutacja»" ustawiasz przez logikę warunkową (Conditional Logic).
- W edytorze formularza kliknij pole, które ma być wyświetlane warunkowo (np. pole wgrywania pliku z CV).
- W ustawieniach pola otwórz „Conditional Logic" i włącz „Enable Conditional Logic".
- Wybierz „Show (pokaż)" lub „Hide (ukryj)" oraz warunek „All (wszystkie spełnione)" lub „Any (którykolwiek spełniony)".
- W wierszu warunku wybierz pole źródłowe (rodzaj zapytania), porównanie (is) i wartość (Rekrutacja). Plusem obok wiersza dodasz kolejne warunki.
Logikę warunkową można ustawić także osobno dla powiadomień i dla komunikatów potwierdzających.
Skonfiguruj powiadomienia e-mail
Powiadomienia e-mail ustawiasz w „Forms → wybrany formularz → Form Settings → Notifications". Po utworzeniu formularza jest już przygotowane jedno powiadomienie dla administratora. Przyciskiem „Add New" dodasz kolejne powiadomienia, np. automatyczną odpowiedź.
| Pozycja | Zawartość |
|---|---|
| Send To | Adresat. „Enter Email" to stały adres, „Select a Field" to pole e-mail z formularza, a „Configure Routing" kieruje do różnych adresatów zależnie od wpisanej treści |
| From Email | Nadawca. {admin_email} (adres e-mail administratora z „Ustawienia → Ogólne" w WordPress, Settings → General) albo stały adres |
| Reply To | Adres do odpowiedzi. W powiadomieniu dla administratora warto wstawić merge tag pola z adresem e-mail osoby, która napisała, bo ułatwi to odpowiedź |
| Subject / Message | Temat i treść. Merge tagami możesz wstawić wpisane dane |
Merge tag to symbol, w którego miejsce wstawiana jest przesłana wartość. Wartość pola ma postać {etykieta:ID pola} (np. {Name:1}; etykietę można pominąć i napisać {:1}), a {all_fields} wstawia całą wpisaną treść w postaci tabeli. Jeśli wybierzesz je przyciskiem merge tagów w prawym górnym rogu pola wiadomości, nie musisz sprawdzać ID pól.
Jeśli adres nadawcy należy do tej samej domeny co witryna, rzadziej trafia do spamu. Adresu e-mail osoby, która napisała, unikaj jako nadawcy i wpisz go w Reply To.
Komunikat potwierdzający po wysłaniu
To, co jest wyświetlane po wysłaniu, ustawiasz w „Form Settings → Confirmations". Są trzy rodzaje:
- Text: wyświetla komunikat w miejscu formularza (ustawienie domyślne)
- Page: przechodzi do strony statycznej w witrynie
- Redirect: przechodzi pod wskazany adres URL
Jeśli przygotowujesz stronę z potwierdzeniem wysłania, aby używać jej do pomiaru reklam lub analityki, wybierz Page lub Redirect.
Dodaj walidację w PHP
Walidację, której nie da się ustawić w panelu, dodasz filtrem gform_field_validation. Jeśli po nazwie haka dopiszesz _ID formularza_ID pola, filtr zadziała tylko dla tego pola. Poniższy przykład waliduje numer telefonu wpisany w polu o ID 3 w formularzu o ID 1. Umieść go w functions.php motywu lub we własnej wtyczce.
<?php
// Waliduje numer telefonu w formularzu o ID 1, polu o ID 3
add_filter( 'gform_field_validation_1_3', function ( $result, $value, $form, $field ) {
if ( ! is_string( $value ) || '' === $value ) {
return $result; // Brak wpisu zostawiamy ustawieniu „Required" pola
}
$digits = str_replace( array( '-', ' ' ), '', $value );
if ( ! preg_match( '/^0\d{9,10}$/', $digits ) ) {
$result['is_valid'] = false;
$result['message'] = 'Wpisz numer telefonu zaczynający się od 0, składający się z 10 lub 11 cyfr (myślniki są dozwolone).';
}
return $result;
}, 10, 4 );
ID formularza i ID pola zobaczysz w edytorze formularza po wybraniu pola. Po ponownym utworzeniu formularza ID się zmienia, więc sprawdź, czy w środowisku produkcyjnym i deweloperskim są takie same.
Powiadamianie na zewnątrz po wysłaniu
Jeśli w licencji bez dodatku Webhooks chcesz przy każdym wysłaniu informować np. Slack, możesz napisać obsługę w akcji gform_after_submission. Ta akcja jest wykonywana po zapisaniu wpisu i wysłaniu powiadomień e-mail. Uruchamia się też dla wpisów uznanych za spam, więc przed wysłaniem sprawdź stan. Przy licencji Pro lub wyższej można to też skonfigurować dodatkiem Slack lub Zapier.
<?php
// Po wysłaniu formularza o ID 1 powiadom Incoming Webhook Slacka
add_action( 'gform_after_submission_1', function ( $entry, $form ) {
if ( 'spam' === rgar( $entry, 'status' ) ) {
return;
}
// Adres URL Webhooka zapisz w wp-config.php jako define( 'MY_SLACK_WEBHOOK_URL', '...' );
if ( ! defined( 'MY_SLACK_WEBHOOK_URL' ) ) {
return;
}
wp_remote_post( MY_SLACK_WEBHOOK_URL, array(
'headers' => array( 'Content-Type' => 'application/json' ),
'body' => wp_json_encode( array(
'text' => sprintf( 'Nowe zapytanie: %s', rgar( $entry, '1' ) ),
) ),
'timeout' => 5,
) );
}, 10, 2 );
rgar( $entry, '1' ) to wartość pola o ID 1. Pola z kilkoma polami wpisywania, takie jak pole imienia i nazwiska (Name), pobierasz przez ID z kropką, np. '1.3' (imię) i '1.6' (nazwisko). Adres URL Webhooka to informacja tajna, więc nie wpisuj go bezpośrednio w kodzie i nie umieszczaj go w publicznym repozytorium.
Przeglądanie i eksport wpisów
Przesłane dane są zapisywane w bazie danych WordPress i możesz je przeglądać w „Forms → Entries". Aby wyeksportować je do CSV, otwórz „Forms → Import/Export", w „Export Entries" wybierz formularz, wskaż pola i okres do eksportu, a następnie pobierz plik.
Z poziomu PHP pobierzesz je przez GFAPI::get_entries(). To przykład sprawdzenia w WP-CLI ostatnich 10 wpisów.
wp eval 'echo wp_json_encode( GFAPI::get_entries( 1, array(), null, array( "offset" => 0, "page_size" => 10 ) ) );'
Na co uważać
- Przesłane dane zawierają dane osobowe. Jeśli nie musisz ich przechowywać, ustal zasady postępowania, np. okres przechowywania w ustawieniach formularza i usuwanie danych, albo niepozostawianie wyeksportowanych plików CSV bez nadzoru.
- Jeśli powiadomienia e-mail nie docierają, przyczyną jest często nie Gravity Forms, lecz wysyłka poczty z serwera. Pomóc może wtyczka wysyłająca przez SMTP.
- Zanim dodasz kod PHP, sprawdź w środowisku stagingowym, czy ID formularza i ID pola są poprawne.
Pytania o WordPress? Wydawca tej witryny ma siedzibę w Japonii i odpowiada po japońsku. Kontakt (po japońsku)