The gform_target_page filter in Gravity Forms sets the target page when submitting the form. It typically applies to multi-page forms.
Usage
To apply to all forms:
add_filter('gform_target_page', 'my_function', 10, 2);
To target a specific form:
add_filter('gform_target_page_123', 'my_function', 10, 2);
Parameters
- $target_page (integer): The target page number.
- $form (Form Object): The current Form object.
- $current_page (integer): The page from which the form was submitted.
- $field_values (array): Dynamic population values that were provided when loading the form.
More information
See Gravity Forms Docs: gform_target_page
This hook was added in Gravity Forms 2.1.2.13.
Source Code: This filter is located in the GFFormDisplay::get_target_page() method in /form_display.php
.
Examples
Adjust target page for conditional logic
This example demonstrates how you can account for conditional padding that is added to the target page number when jumping from a source page to a target page with one or more conditional pages between them.
add_filter('gform_target_page', 'adjust_target_page_for_conditional_logic', 10, 2); function adjust_target_page_for_conditional_logic($modified_target_page, $form) { $target_page = rgpost('gform_target_page_number_' . $form['id']); $source_page = rgpost('gform_source_page_number_' . $form['id']); $forward_skip = $target_page > $source_page + 1; $back_skip = $target_page < $source_page - 1; if ($target_page == 0 || (!$forward_skip && !$back_skip)) { return $modified_target_page; } if ($forward_skip && $modified_target_page == 0) { $target_page = GFFormDisplay::get_max_page_number($form); } return $target_page; }
Skip a specific page
This example demonstrates how to skip a specific page based on a custom condition.
add_filter('gform_target_page', 'skip_specific_page', 10, 2); function skip_specific_page($target_page, $form) { // Your custom condition if ($target_page == 2 && your_custom_condition()) { return $target_page + 1; } return $target_page; }
Skip all pages until a specific condition is met
This example demonstrates how to skip all pages until a specific condition is met.
add_filter('gform_target_page', 'skip_until_condition_met', 10, 2); function skip_until_condition_met($target_page, $form) { while ($target_page <= GFFormDisplay::get_max_page_number($form)) { if (your_custom_condition($target_page)) { break; } $target_page++; } return $target_page; }