Make WordPress Core

Changeset 49732


Ignore:
Timestamp:
12/01/2020 08:55:03 PM (6 years ago)
Author:
johnbillion
Message:

REST API: Pass the previous state of the post as a parameter to the wp_after_insert_post hook.

This enables, for example, the previous post status to be used by this hook without the need to first capture it on an earlier hook.

This also fixes the value of the $fire_after_hooks parameter in get_default_post_to_edit() so the wp_after_insert_post action correctly fires just once on the new post screen.

This merges [45114] into the 5.6 branch

See #45114

Location:
branches/5.6
Files:
6 edited
1 copied

Legend:

Unmodified
Added
Removed
  • branches/5.6

  • branches/5.6/src/wp-admin/includes/post.php

    r49614 r49732  
    688688                        ),
    689689                        false,
    690                         true
     690                        false
    691691                );
    692692                $post    = get_post( $post_id );
    … …  
    694694                        set_post_format( $post, get_option( 'default_post_format' ) );
    695695                }
    696                 wp_after_insert_post( $post, false );
     696                wp_after_insert_post( $post, false, null );
    697697
    698698                // Schedule auto-draft cleanup.
  • branches/5.6/src/wp-includes/class-wp-customize-manager.php

    r49193 r49732  
    31063106                do_action( 'wp_insert_post', $post->ID, $post, true );
    31073107
    3108                 wp_after_insert_post( $post, true );
     3108                wp_after_insert_post( get_post( $post_id ), true, $post );
    31093109
    31103110                wp_trash_post_comments( $post_id );
  • branches/5.6/src/wp-includes/post.php

    r49684 r49732  
    37183718        } else {
    37193719                $previous_status = 'new';
     3720                $post_before     = null;
    37203721        }
    37213722
    … …  
    43204321
    43214322        if ( $fire_after_hooks ) {
    4322                 wp_after_insert_post( $post, $update );
     4323                wp_after_insert_post( $post, $update, $post_before );
    43234324        }
    43244325
    … …  
    44334434        }
    44344435
     4436        $post_before = get_post( $post->ID );
     4437
    44354438        // Ensure at least one term is applied for taxonomies with a default term.
    44364439        foreach ( get_object_taxonomies( $post->post_type, 'object' ) as $taxonomy => $tax_object ) {
    … …  
    44834486        do_action( 'wp_insert_post', $post->ID, $post, true );
    44844487
    4485         wp_after_insert_post( $post, true );
     4488        wp_after_insert_post( $post, true, $post_before );
    44864489}
    44874490
    … …  
    49384941 * @since 5.6.0
    49394942 *
    4940  * @param int|WP_Post $post   The post ID or object that has been saved.
    4941  * @param bool        $update Whether this is an existing post being updated.
    4942  */
    4943 function wp_after_insert_post( $post, $update ) {
     4943 * @param int|WP_Post  $post        The post ID or object that has been saved.
     4944 * @param bool         $update      Whether this is an existing post being updated.
     4945 * @param null|WP_Post $post_before Null for new posts, the WP_Post object prior
     4946 *                                  to the update for updated posts.
     4947 */
     4948function wp_after_insert_post( $post, $update, $post_before ) {
    49444949        $post = get_post( $post );
    49454950        if ( ! $post ) {
    … …  
    49544959         * @since 5.6.0
    49554960         *
    4956          * @param int     $post_id Post ID.
    4957          * @param WP_Post $post    Post object.
    4958          * @param bool    $update  Whether this is an existing post being updated.
     4961         * @param int          $post_id     Post ID.
     4962         * @param WP_Post      $post        Post object.
     4963         * @param bool         $update      Whether this is an existing post being updated.
     4964         * @param null|WP_Post $post_before Null for new posts, the WP_Post object prior
     4965         *                                  to the update for updated posts.
    49594966         */
    4960         do_action( 'wp_after_insert_post', $post_id, $post, $update );
     4967        do_action( 'wp_after_insert_post', $post_id, $post, $update, $post_before );
    49614968}
    49624969
  • branches/5.6/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php

    r49172 r49732  
    192192                do_action( 'rest_after_insert_attachment', $attachment, $request, true );
    193193
    194                 wp_after_insert_post( $attachment, false );
     194                wp_after_insert_post( $attachment, false, null );
    195195
    196196                if ( defined( 'REST_REQUEST' ) && REST_REQUEST ) {
    … …  
    322322                }
    323323
    324                 $response = parent::update_item( $request );
     324                $attachment_before = get_post( $request['id'] );
     325                $response          = parent::update_item( $request );
    325326
    326327                if ( is_wp_error( $response ) ) {
    … …  
    348349                do_action( 'rest_after_insert_attachment', $attachment, $request, false );
    349350
    350                 wp_after_insert_post( $attachment, true );
     351                wp_after_insert_post( $attachment, true, $attachment_before );
    351352
    352353                $response = $this->prepare_item_for_response( $attachment, $request );
  • branches/5.6/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php

    r49302 r49732  
    678678                do_action( "rest_after_insert_{$this->post_type}", $post, $request, true );
    679679
    680                 wp_after_insert_post( $post, false );
     680                wp_after_insert_post( $post, false, null );
    681681
    682682                $response = $this->prepare_item_for_response( $post, $request );
    … …  
    754754                }
    755755
    756                 $post = $this->prepare_item_for_database( $request );
     756                $post_before = get_post( $request['id'] );
     757                $post        = $this->prepare_item_for_database( $request );
    757758
    758759                if ( is_wp_error( $post ) ) {
    … …  
    831832                do_action( "rest_after_insert_{$this->post_type}", $post, $request, false );
    832833
    833                 wp_after_insert_post( $post, true );
     834                wp_after_insert_post( $post, true, $post_before );
    834835
    835836                $response = $this->prepare_item_for_response( $post, $request );
Note: See TracChangeset for help on using the changeset viewer.