WordPress.org

Codex

Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

Plugin API/Filter Reference/wp insert post data

Description

A filter hook called by the wp_insert_post function prior to inserting into or updating the database.

Usage

<?php function filter_handler$data $postarr ){ ...... }

add_filter'wp_insert_post_data''filter_handler''99'); ?>

Parameters

$data
(array) (required) An array of slashed post data
Default: None
$postarr
(array) (required) An array of sanitized, but otherwise unmodified post data
Default: None

Return Values

(array) 
$data.

Examples

<?php
function filter_handler$data $postarr ) {
  
// do something with the post data
  
return $data;
}

add_filter'wp_insert_post_data''filter_handler''99');
?>

Notes

You must pass 2 for the $accepted_args variable in add_filter() if you want to access $postarr.

Some have problems to get the post ID inside wp_insert_post_data:

If you have access to $postarr, you can easily retrieve the post ID with <?php
$my_post_id 
$postarr['ID'];
?>

The defaults for the parameter $data are:

   'post_author',
   'post_date',
   'post_date_gmt',
   'post_content',
   'post_content_filtered',
   'post_title',
   'post_excerpt',
   'post_status',
   'post_type',
   'comment_status',
   'ping_status',
   'post_password',
   'post_name',
   'to_ping',
   'pinged',
   'post_modified',
   'post_modified_gmt',
   'post_parent',
   'menu_order',
   'guid'

The defaults for the parameter $postarr are:

   'post_status'           - Default is 'draft'.
   'post_type'             - Default is 'post'.
   'post_author'           - Default is current user ID ($user_ID). The ID of the user who added the post.
   'ping_status'           - Default is the value in 'default_ping_status' option.
                             Whether the attachment can accept pings.
   'post_parent'           - Default is 0. Set this for the post it belongs to, if any.
   'menu_order'            - Default is 0. The order it is displayed.
   'to_ping'               - Whether to ping.
   'pinged'                - Default is empty string.
   'post_password'         - Default is empty string. The password to access the attachment.
   'guid'                  - Global Unique ID for referencing the attachment.
   'post_content_filtered' - Post content filtered.
   'post_excerpt'          - Post excerpt.


The post $postarr looks like:

   'post_status',
   'post_type',
   'post_author',
   'ping_status',
   'post_parent',
   'menu_order',
   'to_ping',
   'pinged',
   'post_password',
   'guid',
   'post_content_filtered',
   'post_excerpt',
   'import_id',
   'post_content',
   'post_title',
   'ID',
   'post_date',
   'post_date_gmt',
   'comment_status',
   'post_name',
   'post_modified',
   'post_modified_gmt',
   'post_mime_type',
   'comment_count',
   'ancestors',
   'post_category',
   'tags_input',
   'filter'

Change Log

(wp_insert_post) Since: 1.0.0

Source File

wp_insert_post is located in wp-includes/post.php.

Related

comment_save_pre, pre_comment_approved, pre_comment_content, preprocess_comment, wp_insert_post(), wp_update_post()

See Also

Plugin_API/Filter_Reference