The gform_pre_process
filter in Gravity Forms allows you to modify the form object before form submission begins processing. This is particularly useful for modifying confirmations or notifications.
Usage
Apply this filter to all forms using:
add_filter( 'gform_pre_process','your_function_name', 10, 1 );
To target a specific form, append the form id to the hook name like so:
add_filter( 'gform_pre_process_1','your_function_name', 10, 1 );
Insert your custom code in place of 'your_function_name'
.
Parameters
- $form (Form Object): This is the form object that you can manipulate.
More information
See Gravity Forms Docs: gform_pre_process
Examples
Change Confirmations
If you need to change form confirmations, use the following code:
add_filter( 'gform_pre_process','change_confirmations', 10, 1 ); function change_confirmations( $form ){ $confirmations = $form['confirmations']; foreach ( $confirmations as $id => $confirmation ) { $confirmation['name'] = 'Test Confirmation'; $confirmation['message'] = 'This is a test submission. Please disregard.'; $new_confirmations[ $id] = $confirmation; } $form['confirmations'] = $new_confirmations; return $form; }
This code loops over all confirmations of the form and changes their name and message.
Change Notifications
To change notifications, you can use similar code:
add_filter( 'gform_pre_process','change_notifications', 10, 1 ); function change_notifications( $form ){ $notifications = $form['notifications']; foreach ( $notifications as $id => $notification ) { $notification['subject'] = 'Test Notification'; $notification['message'] = 'This is a test submission. Please disregard.'; $new_notifications[ $id] = $notification; } $form['notifications'] = $new_notifications; return $form; }
This code alters each notification’s subject and message.
Prevent Form Submission
If you want to prevent form submission based on a condition, you can do so:
add_filter( 'gform_pre_process','change_form', 10, 1 ); function change_form( $form ){ if ( $form['id'] == 75 ) { $form['is_active'] = false; } return $form; }
This code prevents form submission if the form’s id is 75.
Use a Form Field as Email for the Save and Continue Confirmation
You can use a form field as the email address for the “Save and Continue” confirmation:
add_action( 'gform_pre_process_2', function ( $form ) { if ( rgpost( 'gform_save' ) ) { $_POST['gform_resume_email'] = rgpost( 'input_1' ); } });
This code sets the ‘gform_resume_email’ post variable to the value of the form field with id 1.
Save File for Base64 Data URI
To save a file from a base64 data URI included in the request, you can use the following code:
add_action( 'gform_pre_process_178', function ( $form ) { GFCommon::log_debug( 'gform_pre_process: running' );
javascript
// Get the base64 data URI from the input named input_3
$base64_string = rgpost( ‘input_3’ );
if ( ! empty( $base64_string ) ) {
GFCommon::log_debug( ‘gform_pre_process: found string’ );
$target_dir = GFFormsModel::get_upload_path( $form[‘id’] ) . DIRECTORY_SEPARATOR . ‘tmp’ . DIRECTORY_SEPARATOR;
// Create upload directory if it doesn’t exist
if ( ! is_dir( $target_dir ) ) {
GFCommon::log_debug( ‘gform_pre_process: creating tmp folder’ );
if ( ! wp_mkdir_p( $target_dir ) ) {
GFCommon::log_debug( “gform_pre_process: Couldn’t create the tmp folder: ” . $target_dir );
return;
} else {
GFCommon::recursive_add_index_file( $target_dir );
}
}
// ID of the single file upload field
$upload_field_id = 4;
// File extension
$file_extension = ‘png’;
// Get the file contents from the base64 data URI
$file_contents = base64_decode( preg_replace( ‘#^data:image/\w+;base64,#i’, ”, $base64_string ) );
// Get the temp file name
$temp_filename = sprintf( ‘%s_input_%s.%s’, GFFormsModel::get_form_unique_id( $form[‘id’] ), $upload_field_id, $file_extension );
// Save the temp file
$result = file_put_contents( $target_dir . $temp_filename, $file_contents );
GFCommon::log_debug( ‘gform_pre_process: file_put_contents result: ‘ . var_export( $result, true ) );
// Define the name the file should use when saved to the entry
$uploaded_file_name = ‘testing.png’;
// Add the temp file details to the gform_uploaded_files input which Gravity Forms will access when saving the entry
$_POST[‘gform_uploaded_files’] = json_encode( array( ‘input_’ . $upload_field_id => $uploaded_file_name ) );
}
});
This code takes a base64 data URI from an input field, converts it to a file, and saves it in a temporary directory.