diff --git a/wp-admin/includes/post.php b/wp-admin/includes/post.php index cb2cd060dd..fbf11b3ded 100644 --- a/wp-admin/includes/post.php +++ b/wp-admin/includes/post.php @@ -687,13 +687,13 @@ function get_default_post_to_edit( $post_type = 'post', $create_in_db = false ) 'post_status' => 'auto-draft', ), false, - true + false ); $post = get_post( $post_id ); if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post->post_type, 'post-formats' ) && get_option( 'default_post_format' ) ) { set_post_format( $post, get_option( 'default_post_format' ) ); } - wp_after_insert_post( $post, false ); + wp_after_insert_post( $post, false, null ); // Schedule auto-draft cleanup. if ( ! wp_next_scheduled( 'wp_scheduled_auto_draft_delete' ) ) { diff --git a/wp-includes/class-wp-customize-manager.php b/wp-includes/class-wp-customize-manager.php index a46b97fa5a..ff433fe5db 100644 --- a/wp-includes/class-wp-customize-manager.php +++ b/wp-includes/class-wp-customize-manager.php @@ -3105,7 +3105,7 @@ final class WP_Customize_Manager { /** This action is documented in wp-includes/post.php */ do_action( 'wp_insert_post', $post->ID, $post, true ); - wp_after_insert_post( $post, true ); + wp_after_insert_post( get_post( $post_id ), true, $post ); wp_trash_post_comments( $post_id ); diff --git a/wp-includes/post.php b/wp-includes/post.php index 5ebd80f79d..a78b266a12 100644 --- a/wp-includes/post.php +++ b/wp-includes/post.php @@ -3717,6 +3717,7 @@ function wp_insert_post( $postarr, $wp_error = false, $fire_after_hooks = true ) $previous_status = get_post_field( 'post_status', $post_ID ); } else { $previous_status = 'new'; + $post_before = null; } $post_type = empty( $postarr['post_type'] ) ? 'post' : $postarr['post_type']; @@ -4319,7 +4320,7 @@ function wp_insert_post( $postarr, $wp_error = false, $fire_after_hooks = true ) do_action( 'wp_insert_post', $post_ID, $post, $update ); if ( $fire_after_hooks ) { - wp_after_insert_post( $post, $update ); + wp_after_insert_post( $post, $update, $post_before ); } return $post_ID; @@ -4432,6 +4433,8 @@ function wp_publish_post( $post ) { return; } + $post_before = get_post( $post->ID ); + // Ensure at least one term is applied for taxonomies with a default term. foreach ( get_object_taxonomies( $post->post_type, 'object' ) as $taxonomy => $tax_object ) { // Skip taxonomy if no default term is set. @@ -4482,7 +4485,7 @@ function wp_publish_post( $post ) { /** This action is documented in wp-includes/post.php */ do_action( 'wp_insert_post', $post->ID, $post, true ); - wp_after_insert_post( $post, true ); + wp_after_insert_post( $post, true, $post_before ); } /** @@ -4937,10 +4940,12 @@ function wp_transition_post_status( $new_status, $old_status, $post ) { * * @since 5.6.0 * - * @param int|WP_Post $post The post ID or object that has been saved. - * @param bool $update Whether this is an existing post being updated. + * @param int|WP_Post $post The post ID or object that has been saved. + * @param bool $update Whether this is an existing post being updated. + * @param null|WP_Post $post_before Null for new posts, the WP_Post object prior + * to the update for updated posts. */ -function wp_after_insert_post( $post, $update ) { +function wp_after_insert_post( $post, $update, $post_before ) { $post = get_post( $post ); if ( ! $post ) { return; @@ -4953,11 +4958,13 @@ function wp_after_insert_post( $post, $update ) { * * @since 5.6.0 * - * @param int $post_id Post ID. - * @param WP_Post $post Post object. - * @param bool $update Whether this is an existing post being updated. + * @param int $post_id Post ID. + * @param WP_Post $post Post object. + * @param bool $update Whether this is an existing post being updated. + * @param null|WP_Post $post_before Null for new posts, the WP_Post object prior + * to the update for updated posts. */ - do_action( 'wp_after_insert_post', $post_id, $post, $update ); + do_action( 'wp_after_insert_post', $post_id, $post, $update, $post_before ); } // diff --git a/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php b/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php index fcbf70f501..3eb0490960 100644 --- a/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php +++ b/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php @@ -191,7 +191,7 @@ class WP_REST_Attachments_Controller extends WP_REST_Posts_Controller { */ do_action( 'rest_after_insert_attachment', $attachment, $request, true ); - wp_after_insert_post( $attachment, false ); + wp_after_insert_post( $attachment, false, null ); if ( defined( 'REST_REQUEST' ) && REST_REQUEST ) { // Set a custom header with the attachment_id. @@ -321,7 +321,8 @@ class WP_REST_Attachments_Controller extends WP_REST_Posts_Controller { ); } - $response = parent::update_item( $request ); + $attachment_before = get_post( $request['id'] ); + $response = parent::update_item( $request ); if ( is_wp_error( $response ) ) { return $response; @@ -347,7 +348,7 @@ class WP_REST_Attachments_Controller extends WP_REST_Posts_Controller { /** This action is documented in wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php */ do_action( 'rest_after_insert_attachment', $attachment, $request, false ); - wp_after_insert_post( $attachment, true ); + wp_after_insert_post( $attachment, true, $attachment_before ); $response = $this->prepare_item_for_response( $attachment, $request ); $response = rest_ensure_response( $response ); diff --git a/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php b/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php index c168d8993c..a052d04964 100644 --- a/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php +++ b/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php @@ -677,7 +677,7 @@ class WP_REST_Posts_Controller extends WP_REST_Controller { */ do_action( "rest_after_insert_{$this->post_type}", $post, $request, true ); - wp_after_insert_post( $post, false ); + wp_after_insert_post( $post, false, null ); $response = $this->prepare_item_for_response( $post, $request ); $response = rest_ensure_response( $response ); @@ -753,7 +753,8 @@ class WP_REST_Posts_Controller extends WP_REST_Controller { return $valid_check; } - $post = $this->prepare_item_for_database( $request ); + $post_before = get_post( $request['id'] ); + $post = $this->prepare_item_for_database( $request ); if ( is_wp_error( $post ) ) { return $post; @@ -830,7 +831,7 @@ class WP_REST_Posts_Controller extends WP_REST_Controller { /** This action is documented in wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php */ do_action( "rest_after_insert_{$this->post_type}", $post, $request, false ); - wp_after_insert_post( $post, true ); + wp_after_insert_post( $post, true, $post_before ); $response = $this->prepare_item_for_response( $post, $request ); diff --git a/wp-includes/version.php b/wp-includes/version.php index 0c09433680..01bf49f56d 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -13,7 +13,7 @@ * * @global string $wp_version */ -$wp_version = '5.6-RC1-49730'; +$wp_version = '5.6-RC1-49732'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.