[wp-trac] [WordPress Trac] #54708: Fix block theme featured image preview (was: Improve `_set_preview` for case when autosave missing)

WordPress Trac noreply at wordpress.org
Wed Dec 29 21:38:18 UTC 2021


#54708: Fix block theme featured image preview
------------------------------------------------+--------------------------
 Reporter:  adamsilverstein                     |       Owner:
                                                |  adamsilverstein
     Type:  defect (bug)                        |      Status:  assigned
 Priority:  normal                              |   Milestone:  5.9
Component:  General                             |     Version:  trunk
 Severity:  normal                              |  Resolution:
 Keywords:  dev-feedback has-patch 2nd-opinion  |     Focuses:
------------------------------------------------+--------------------------
Description changed by adamsilverstein:

Old description:

> Problem: Autosaves are deleting when a new autosave is sent with the same
> data. In the block editor, this causes the preview data to be missing on
> previews.
>
> Bug exhibited: When using block themes, post previews do not properly
> display the currently set featured image. Several other data
> transformations are also missing because `_set_preview` exits early when
> it can't locate the autosave.
>
> When investigating an issue with previews in block themes not working
> correctly, I found an underlying bug that prevents autosaves from being
> used correctly for previews in some cases. (See
> [https://github.com/WordPress/gutenberg/pull/37622#issuecomment-1002690803
> PR comment]).
>
> In `src/wp-includes/rest-api/endpoints/class-wp-rest-autosaves-
> controller.php` in the `create_post_autosave` function - when the
> autosave sent to the autosave REST endpoint exactly matches the previous
> autosave, the controller **deletes the old autosave revision**, then
> returns an error "There is nothing to save. The autosave and the post
> content are the same."
>
> Deleting the old autosave revision means that later when `src/wp-
> includes/revision.php` `_set_preview` gets called, and it calls
> `wp_get_post_autosave` the autosave is missing, and the preview data
> swaps are not activated.
>
> The end result of this is that currently if you set a preview image using
> a block theme on a published post and preview it, the featured image is
> not displayed correctly. Skipping deleting the previous autosave fixes
> the issue.

New description:

 (Improve `_set_preview` for case when autosave missing)

 **Problem: Autosaves are deleting when a new autosave is sent with the
 same data. In the block editor, this causes the preview data to be missing
 on previews.

 Bug exhibited: When using block themes, post previews do not properly
 display the currently set featured image. Several other data
 transformations are also missing because `_set_preview` exits early when
 it can't locate the autosave.

 When investigating an issue with previews in block themes not working
 correctly, I found an underlying bug that prevents autosaves from being
 used correctly for previews in some cases. (See
 [https://github.com/WordPress/gutenberg/pull/37622#issuecomment-1002690803
 PR comment]).

 In `src/wp-includes/rest-api/endpoints/class-wp-rest-autosaves-
 controller.php` in the `create_post_autosave` function - when the autosave
 sent to the autosave REST endpoint exactly matches the previous autosave,
 the controller **deletes the old autosave revision**, then returns an
 error "There is nothing to save. The autosave and the post content are the
 same."

 Deleting the old autosave revision means that later when `src/wp-
 includes/revision.php` `_set_preview` gets called, and it calls
 `wp_get_post_autosave` the autosave is missing, and the preview data swaps
 are not activated.

 The end result of this is that currently if you set a preview image using
 a block theme on a published post and preview it, the featured image is
 not displayed correctly. Skipping deleting the previous autosave fixes the
 issue.

--

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/54708#comment:10>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list