gform_post_data

gform_post_data

DescriptionUsageParametersExamples1. Change the post_type2. Change the post_status3. Set the post date4. Decode shortcodes in the post contentPlacementSource Code

Description
This filter is executed right before the post is created, allowing post data to be manipulated before the post is created.
Note: This filter only applies to forms that have Post Fields.
Usage
1add_filter( 'gform_post_data', 'your_function_name', 10, 3 );

Parameters

$post_data array
The array containing the post data to be filtered. This array is in the format used by the WP function wp_insert_post($post_data)

$form Form Object
The form currently being processed.

$entry Entry Object
The entry currently being processed.

Examples
1. Change the post_type
This example changes the default post type from post to page.
12345678910add_filter( 'gform_post_data', 'change_post_type', 10, 3 );function change_post_type( $post_data, $form, $entry ) {    //only change post type on form id 5    if ( $form['id'] != 5 ) {       return $post_data;    }     $post_data['post_type'] = 'page';    return $post_data;}
2. Change the post_status
This example sets the post status to private.
12345678910add_filter( 'gform_post_data', 'change_post_status', 10, 3 );function change_post_status($post_data, $form, $entry){    //only change post status on form id 5    if ( $form['id'] != 5 ) {       return $post_data;    }     $post_data['post_status'] = 'private';    return $post_data;}
3. Set the post date
This example sets the post date using date and time fields on the form.
12345678910111213141516171819202122232425262728add_filter( 'gform_post_data', 'set_post_date', 10, 3 );function set_post_date( $post_data, $form, $entry ) {  //only do this when the form id is 23  if ( $form['id'] != 23 ) {    return $post_data;  }   //set post date to field on form if date provided; get from entry data  //using a date field in mm/dd/yyyy format and a time field in 24 hour format  $date_value = rgar( $entry, '6' ); //pull the date value from the form data posted, field 6 on my form  $time = rgar( $entry, '7' ); //pull the time value from the form data posted, field 7 on my form  //only change post date/time when a date has been chosen  if ( ! empty( $date_value ) ) {    if ( empty( $time ) ) {      //set default time      $time_value = '00:00:00';    } else {      $time = explode( ':', $time ); //assumes you are using a time field in 24 hour format      empty( $time[0] ) ? $time_hours = '00' : $time_hours = $time[0]; //pull hours out of array      empty( $time[1] ) ? $time_minutes = '00' : $time_minutes = $time[1]; //pull minutes out of array      $time_value = $time_hours . ':' . $time_minutes . ':00'; //add on seconds    }    //convert post date to the appropriate format so it will be inserted into the database    $post_date = date( 'Y-m-d H:i:s', strtotime( $date_value . ' ' . $time_value ) );    $post_data['post_date'] = $post_date; //set the post_date  }  return $post_data; //return the changed data to use when the post is created}
4. Decode shortcodes in the post content
This example shows how you can decode the opening and closing brackets used by shortcodes in the post body field value.
12345678add_filter( 'gform_post_data', function ( $post_data ) {    $find    = array( '[', ']' );    $replace = array( '[', ']' );     $post_data['post_content'] = str_replace( $find, $replace, $post_data['post_content'] );     return $post_data;} );
Placement
This code should be placed in the functions.php file of your active theme.
Source Code
This filter is located in GFFormsModel::create_post() in forms_model.php.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注