diff --git a/src/wp-admin/revision.php b/src/wp-admin/revision.php index 43cc266748..156e998b57 100644 --- a/src/wp-admin/revision.php +++ b/src/wp-admin/revision.php @@ -60,8 +60,18 @@ switch ( $action ) { check_admin_referer( "restore-post_{$revision->ID}" ); + /* + * Ensure the global $post remains the same after revision is restored. + * Because wp_insert_post() and wp_transition_post_status() are called + * during the process, plugins can unexpectedly modify $post. + */ + $backup_global_post = clone $post; + wp_restore_post_revision( $revision->ID ); + // Restore the global $post as it was before. + $post = $backup_global_post; + $redirect = add_query_arg( array( 'message' => 5,