Description
The gravityflowincomingwebhook_response_pre_process filters the processing of the webhook to be able to override the response entirely. The filter can be very helpful if you are looking for a way to modify the $response and $request in the Incoming webhook.
Parameters
Parameter | Type | Details |
---|---|---|
$response | null | A WP_REST_Response object to override |
$request | WP_REST_Request | The entire request object. |
Examples
Send the request name as an entire response
1 2 3 4 5 6 | add_filter( 'gravityflowincomingwebhook_response_pre_process' , 'sh_gravityflowincomingwebhook_response_pre_process' , 10, 2 ); function sh_gravityflowincomingwebhook_response_pre_process( $response , $request ) { //Send a 'name' as response $response = $request [ 'name' ]; return $response ; } |
Verify request data and potential duplicate entries
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | add_filter( 'gravityflowincomingwebhook_response_pre_process' , 'jo_gravityflowincomingwebhook_response_pre_process' , 10, 2 ); function jo_gravityflowincomingwebhook_response_pre_process( $response , $request ) { //Only process the request if it is the specific webhook route. if ( $request ->get_route() != '/gf/v2/workflow/webhooks/26/kypvSfeJxa5ABzHIZt5Arqs8o' ) { return $response ; } //Ensure we have meaningful data to compare to a GFAPI request for existing entries. $content_type = $request ->get_content_type(); if ( rgar( $content_type , 'subtype' ) === 'json' ) { $data = $request ->get_json_params(); } else { $data = $request ->get_body_params(); } $valid = true; //Verify that necessary data exists in the request for validation or entry creation. $required_keys = array ( 'program_id' , 'student_id' , 'review_id' ); foreach ( $required_keys as $key ) { if ( ! in_array( $key , array_keys ( $data ) ) ) { $valid = false; break ; } } if ( ! $valid ) { $message = __( 'The request is missing required data.' , 'gravityflow' ); return new WP_REST_Response( $message , 400 ); } //Check if the entry already exists with the same data. $search_criteria = array (); $search_criteria [ 'status' ] = 'active' ; $search_criteria [ 'field_filters' ] = array ( 'mode' => 'all' , array ( 'key' => '3' , 'value' => $data [ 'program_id' ] ), array ( 'key' => '1' , 'value' => $data [ 'student_id' ] ), array ( 'key' => '5' , 'value' => $data [ 'review_id' ] ), ); $entry_count = GFAPI::count_entries( 57, $search_criteria ); if ( $entry_count > 0 ) { $message = __( 'An entry with the provided data already exists.' , 'gravityflow' ); return new WP_REST_Response( $message , 400 ); } return $response ; } |
Placement
This code can be used in the functions.php file of the active theme, a custom functions plugin, a custom add-on, or with a code snippets plugin.
See also the PHP section in this article: Where Do I Put This Code?