Codex tools: Log in
Contents |
A filter hook called by the wp_insert_post function prior to inserting into or updating the database.
<?php function filter_handler( $data , $postarr ){ ...... }
add_filter( 'wp_insert_post_data', 'filter_handler', '99', 2 ); ?>
<?php
function filter_handler( $data , $postarr ) {
// do something with the post data
return $data;
}
add_filter( 'wp_insert_post_data', 'filter_handler', '99', 2 );
?>
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'
(wp_insert_post) Since: 1.0.0
wp_insert_post is located in wp-includes/post.php.
comment_save_pre, pre_comment_approved, pre_comment_content, preprocess_comment, wp_insert_post(), wp_update_post()