wp_update_post( array|object $postarr = array(), bool $wp_error = false )
Update a post with new post data.
Description Description
The date does not have to be set for drafts. You can set the date and it will not be overridden.
Parameters Parameters
- $postarr
-
(array|object) (Optional) Post data. Arrays are expected to be escaped, objects are not. Default array.
Default value: array()
- $wp_error
-
(bool) (Optional) Allow return of WP_Error on failure.
Default value: false
Return Return
(int|WP_Error) The post ID on success. The value 0 or WP_Error on failure.
Source Source
File: wp-includes/post.php
4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 |
function wp_update_post( $postarr = array (), $wp_error = false ) { if ( is_object ( $postarr ) ) { // Non-escaped post was passed. $postarr = get_object_vars( $postarr ); $postarr = wp_slash( $postarr ); } // First, get all of the original fields. $post = get_post( $postarr [ 'ID' ], ARRAY_A ); if ( is_null ( $post ) ) { if ( $wp_error ) { return new WP_Error( 'invalid_post' , __( 'Invalid post ID.' ) ); } return 0; } // Escape data pulled from DB. $post = wp_slash( $post ); // Passed post category list overwrites existing category list if not empty. if ( isset( $postarr [ 'post_category' ] ) && is_array ( $postarr [ 'post_category' ] ) && count ( $postarr [ 'post_category' ] ) > 0 ) { $post_cats = $postarr [ 'post_category' ]; } else { $post_cats = $post [ 'post_category' ]; } // Drafts shouldn't be assigned a date unless explicitly done so by the user. if ( isset( $post [ 'post_status' ] ) && in_array( $post [ 'post_status' ], array ( 'draft' , 'pending' , 'auto-draft' ), true ) && empty ( $postarr [ 'edit_date' ] ) && ( '0000-00-00 00:00:00' === $post [ 'post_date_gmt' ] ) ) { $clear_date = true; } else { $clear_date = false; } // Merge old and new fields with new fields overwriting old ones. $postarr = array_merge ( $post , $postarr ); $postarr [ 'post_category' ] = $post_cats ; if ( $clear_date ) { $postarr [ 'post_date' ] = current_time( 'mysql' ); $postarr [ 'post_date_gmt' ] = '' ; } if ( 'attachment' === $postarr [ 'post_type' ] ) { return wp_insert_attachment( $postarr , false, 0, $wp_error ); } // Discard 'tags_input' parameter if it's the same as existing post tags. if ( isset( $postarr [ 'tags_input' ] ) && is_object_in_taxonomy( $postarr [ 'post_type' ], 'post_tag' ) ) { $tags = get_the_terms( $postarr [ 'ID' ], 'post_tag' ); $tag_names = array (); if ( $tags && ! is_wp_error( $tags ) ) { $tag_names = wp_list_pluck( $tags , 'name' ); } if ( $postarr [ 'tags_input' ] === $tag_names ) { unset( $postarr [ 'tags_input' ] ); } } return wp_insert_post( $postarr , $wp_error ); } |
Expand full source code View on Trac
Changelog Changelog
Version | Description |
---|---|
1.0.0 | Introduced. |