<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[49172] trunk: REST API, Posts: Add a hook to fire once a post, its terms and meta update.</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="https://core.trac.wordpress.org/changeset/49172">49172</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"https://core.trac.wordpress.org/changeset/49172","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>peterwilsoncc</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2020-10-16 03:32:11 +0000 (Fri, 16 Oct 2020)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>REST API, Posts: Add a hook to fire once a post, its terms and meta update.

Introduces the action `wp_after_insert_post` inside a wrapper function of the same name. This hook allows plugin developers to access a posts full data (including its terms and meta data) regardless of the workflow used to save it.

A new parameter is introduced to `wp_insert_post()` to indicate whether the hook should be fired within the function call or will be fired afterward.

Props aristath, Collizo4sky, danielbachhuber, joyously, kadamwhite, kraftbj, markparnell, mikeschroder, noisysocks, peterwilsoncc, SergeyBiryukov, talldanwp, thewebprincess, TimothyBlynJacobs.
Fixes <a href="https://core.trac.wordpress.org/ticket/45114">#45114</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcwpadminincludespostphp">trunk/src/wp-admin/includes/post.php</a></li>
<li><a href="#trunksrcwpincludesclasswpcustomizemanagerphp">trunk/src/wp-includes/class-wp-customize-manager.php</a></li>
<li><a href="#trunksrcwpincludespostphp">trunk/src/wp-includes/post.php</a></li>
<li><a href="#trunksrcwpincludesrestapiendpointsclasswprestattachmentscontrollerphp">trunk/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php</a></li>
<li><a href="#trunksrcwpincludesrestapiendpointsclasswprestpostscontrollerphp">trunk/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php</a></li>
<li><a href="#trunktestsphpunittestscustomizemanagerphp">trunk/tests/phpunit/tests/customize/manager.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcwpadminincludespostphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-admin/includes/post.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-admin/includes/post.php      2020-10-16 02:41:15 UTC (rev 49171)
+++ trunk/src/wp-admin/includes/post.php        2020-10-16 03:32:11 UTC (rev 49172)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -685,12 +685,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_title'  => __( 'Auto Draft' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_type'   => $post_type,
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_status' => 'auto-draft',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 ),
+                       false,
+                       true
</ins><span class="cx" style="display: block; padding: 0 10px">                 );
</span><span class="cx" style="display: block; padding: 0 10px">                $post    = get_post( $post_id );
</span><span class="cx" style="display: block; padding: 0 10px">                if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post->post_type, 'post-formats' ) && get_option( 'default_post_format' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        set_post_format( $post, get_option( 'default_post_format' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                wp_after_insert_post( $post, false );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Schedule auto-draft cleanup.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! wp_next_scheduled( 'wp_scheduled_auto_draft_delete' ) ) {
</span></span></pre></div>
<a id="trunksrcwpincludesclasswpcustomizemanagerphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/class-wp-customize-manager.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/class-wp-customize-manager.php      2020-10-16 02:41:15 UTC (rev 49171)
+++ trunk/src/wp-includes/class-wp-customize-manager.php        2020-10-16 03:32:11 UTC (rev 49172)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3105,6 +3105,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                /** This action is documented in wp-includes/post.php */
</span><span class="cx" style="display: block; padding: 0 10px">                do_action( 'wp_insert_post', $post->ID, $post, true );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                wp_after_insert_post( $post, true );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_trash_post_comments( $post_id );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                /** This action is documented in wp-includes/post.php */
</span></span></pre></div>
<a id="trunksrcwpincludespostphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/post.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/post.php    2020-10-16 02:41:15 UTC (rev 49171)
+++ trunk/src/wp-includes/post.php      2020-10-16 03:32:11 UTC (rev 49172)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3645,10 +3645,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">  *     @type array  $tax_input             Array of taxonomy terms keyed by their taxonomy name. Default empty.
</span><span class="cx" style="display: block; padding: 0 10px">  *     @type array  $meta_input            Array of post meta values keyed by their post meta key. Default empty.
</span><span class="cx" style="display: block; padding: 0 10px">  * }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @param bool  $wp_error Optional. Whether to return a WP_Error on failure. Default false.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @param bool  $wp_error         Optional. Whether to return a WP_Error on failure. Default false.
+ * @param bool  $fire_after_hooks Whether to fire the after insert hooks. Default true.
</ins><span class="cx" style="display: block; padding: 0 10px">  * @return int|WP_Error The post ID on success. The value 0 or WP_Error on failure.
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-function wp_insert_post( $postarr, $wp_error = false ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+function wp_insert_post( $postarr, $wp_error = false, $fire_after_hooks = true ) {
</ins><span class="cx" style="display: block; padding: 0 10px">         global $wpdb;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // Capture original pre-sanitized array for passing into filters.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4310,6 +4311,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        do_action( 'wp_insert_post', $post_ID, $post, $update );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        if ( $fire_after_hooks ) {
+               wp_after_insert_post( $post, $update );
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         return $post_ID;
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4321,12 +4326,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @since 1.0.0
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @param array|object $postarr  Optional. Post data. Arrays are expected to be escaped,
- *                               objects are not. Default array.
- * @param bool         $wp_error Optional. Allow return of WP_Error on failure. Default false.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @param array|object $postarr          Optional. Post data. Arrays are expected to be escaped,
+ *                                       objects are not. Default array.
+ * @param bool         $wp_error         Optional. Allow return of WP_Error on failure. Default false.
+ * @param bool         $fire_after_hooks Whether to fire the after insert hooks. Default true.
</ins><span class="cx" style="display: block; padding: 0 10px">  * @return int|WP_Error The post ID on success. The value 0 or WP_Error on failure.
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-function wp_update_post( $postarr = array(), $wp_error = false ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+function wp_update_post( $postarr = array(), $wp_error = false, $fire_after_hooks = true ) {
</ins><span class="cx" style="display: block; padding: 0 10px">         if ( is_object( $postarr ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                // Non-escaped post was passed.
</span><span class="cx" style="display: block; padding: 0 10px">                $postarr = get_object_vars( $postarr );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4391,7 +4397,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return wp_insert_post( $postarr, $wp_error );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ return wp_insert_post( $postarr, $wp_error, $fire_after_hooks );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4467,6 +4473,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /** This action is documented in wp-includes/post.php */
</span><span class="cx" style="display: block; padding: 0 10px">        do_action( 'wp_insert_post', $post->ID, $post, true );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+       wp_after_insert_post( $post, true );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4916,6 +4924,34 @@
</span><span class="cx" style="display: block; padding: 0 10px">        do_action( "{$new_status}_{$post->post_type}", $post->ID, $post );
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/**
+ * Fires actions after a post, its terms and meta data has been saved.
+ *
+ * @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.
+ */
+function wp_after_insert_post( $post, $update ) {
+       $post = get_post( $post );
+       if ( ! $post ) {
+               return;
+       }
+
+       $post_id = $post->ID;
+
+       /**
+        * Fires once a post, its terms and meta data has been saved.
+        *
+        * @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.
+        */
+       do_action( 'wp_after_insert_post', $post_id, $post, $update );
+}
+
</ins><span class="cx" style="display: block; padding: 0 10px"> //
</span><span class="cx" style="display: block; padding: 0 10px"> // Comment, trackback, and pingback functions.
</span><span class="cx" style="display: block; padding: 0 10px"> //
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5789,13 +5825,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @see wp_insert_post()
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @param string|array $args     Arguments for inserting an attachment.
- * @param string       $file     Optional. Filename.
- * @param int          $parent   Optional. Parent post ID.
- * @param bool         $wp_error Optional. Whether to return a WP_Error on failure. Default false.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @param string|array $args             Arguments for inserting an attachment.
+ * @param string       $file             Optional. Filename.
+ * @param int          $parent           Optional. Parent post ID.
+ * @param bool         $wp_error         Optional. Whether to return a WP_Error on failure. Default false.
+ * @param bool         $fire_after_hooks Whether to fire the after insert hooks. Default true.
</ins><span class="cx" style="display: block; padding: 0 10px">  * @return int|WP_Error The attachment ID on success. The value 0 or WP_Error on failure.
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-function wp_insert_attachment( $args, $file = false, $parent = 0, $wp_error = false ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+function wp_insert_attachment( $args, $file = false, $parent = 0, $wp_error = false, $fire_after_hooks = true ) {
</ins><span class="cx" style="display: block; padding: 0 10px">         $defaults = array(
</span><span class="cx" style="display: block; padding: 0 10px">                'file'        => $file,
</span><span class="cx" style="display: block; padding: 0 10px">                'post_parent' => 0,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5809,7 +5846,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $data['post_type'] = 'attachment';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        return wp_insert_post( $data, $wp_error );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ return wp_insert_post( $data, $wp_error, $fire_after_hooks );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span></span></pre></div>
<a id="trunksrcwpincludesrestapiendpointsclasswprestattachmentscontrollerphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php 2020-10-16 02:41:15 UTC (rev 49171)
+++ trunk/src/wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php   2020-10-16 03:32:11 UTC (rev 49172)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -191,6 +191,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><span class="cx" style="display: block; padding: 0 10px">                do_action( 'rest_after_insert_attachment', $attachment, $request, true );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                wp_after_insert_post( $attachment, false );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( defined( 'REST_REQUEST' ) && REST_REQUEST ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        // Set a custom header with the attachment_id.
</span><span class="cx" style="display: block; padding: 0 10px">                        // Used by the browser/client to resume creating image sub-sizes after a PHP fatal error.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -270,7 +272,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // $post_parent is inherited from $attachment['post_parent'].
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id = wp_insert_attachment( wp_slash( (array) $attachment ), $file, 0, true );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $id = wp_insert_attachment( wp_slash( (array) $attachment ), $file, 0, true, false );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( is_wp_error( $id ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( 'db_update_error' === $id->get_error_code() ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -345,6 +347,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                /** This action is documented in wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php */
</span><span class="cx" style="display: block; padding: 0 10px">                do_action( 'rest_after_insert_attachment', $attachment, $request, false );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                wp_after_insert_post( $attachment, true );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = $this->prepare_item_for_response( $attachment, $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_ensure_response( $response );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="trunksrcwpincludesrestapiendpointsclasswprestpostscontrollerphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php       2020-10-16 02:41:15 UTC (rev 49171)
+++ trunk/src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php 2020-10-16 03:32:11 UTC (rev 49172)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -591,7 +591,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $prepared_post->post_type = $this->post_type;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $post_id = wp_insert_post( wp_slash( (array) $prepared_post ), true );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $post_id = wp_insert_post( wp_slash( (array) $prepared_post ), true, false );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( is_wp_error( $post_id ) ) {
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -677,6 +677,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><span class="cx" style="display: block; padding: 0 10px">                do_action( "rest_after_insert_{$this->post_type}", $post, $request, true );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                wp_after_insert_post( $post, false );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = $this->prepare_item_for_response( $post, $request );
</span><span class="cx" style="display: block; padding: 0 10px">                $response = rest_ensure_response( $response );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -758,7 +760,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Convert the post object to an array, otherwise wp_update_post() will expect non-escaped input.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $post_id = wp_update_post( wp_slash( (array) $post ), true );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $post_id = wp_update_post( wp_slash( (array) $post ), true, false );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( is_wp_error( $post_id ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( 'db_update_error' === $post_id->get_error_code() ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -828,6 +830,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                /** This action is documented in wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php */
</span><span class="cx" style="display: block; padding: 0 10px">                do_action( "rest_after_insert_{$this->post_type}", $post, $request, false );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                wp_after_insert_post( $post, true );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = $this->prepare_item_for_response( $post, $request );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                return rest_ensure_response( $response );
</span></span></pre></div>
<a id="trunktestsphpunittestscustomizemanagerphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/customize/manager.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/customize/manager.php   2020-10-16 02:41:15 UTC (rev 49171)
+++ trunk/tests/phpunit/tests/customize/manager.php     2020-10-16 03:32:11 UTC (rev 49172)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1171,6 +1171,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'save_post_customize_changeset' => 2,
</span><span class="cx" style="display: block; padding: 0 10px">                        'save_post'                     => 2,
</span><span class="cx" style="display: block; padding: 0 10px">                        'wp_insert_post'                => 2,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        'wp_after_insert_post'          => 2,
</ins><span class="cx" style="display: block; padding: 0 10px">                         'trashed_post'                  => 1,
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px">                $action_counts    = array();
</span></span></pre>
</div>
</div>

</body>
</html>