[wp-trac] [WordPress Trac] #52935: oEmbed cache is no longer refreshed upon post update
WordPress Trac
noreply at wordpress.org
Mon Mar 29 10:36:17 UTC 2021
#52935: oEmbed cache is no longer refreshed upon post update
--------------------------+-----------------------------
Reporter: david.binda | Owner: (none)
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Embeds | Version: 5.0
Severity: normal | Keywords:
Focuses: |
--------------------------+-----------------------------
Before the Block editor was introduced, an AJAX request was used for
refreshing oEmbed cache of a given post upon it's update.
See related code:
https://core.trac.wordpress.org/browser/trunk/src/wp-includes/class-wp-
embed.php?rev=48586#L81
and
https://core.trac.wordpress.org/browser/trunk/src/wp-admin/includes/ajax-
actions.php?rev=48586#L253
However, this code is no longer being triggered by the block editor for
multiple reasons ( post update is happening via REST API, thus there is no
redirect and the `edit_form_advanced` action prints only hidden fields in
the block editor ), and even if it were, the `WP_Embed::cache_oembed` does
not seem to properly parse the Block's editor notation. So, even switching
to classic editor and updating the post won't make the oEmbeds to refresh.
The only way to refresh oEmbeds is a WP CLI command ( see
https://developer.wordpress.org/cli/commands/embed-2/cache/ ).
Due to the way the Block editor handles display during the editing part
and it's discrepancy in the front-end displaying part, an embed which, for
whaterver reason failed to cache ( there is this `{{unknown}}` post meta
for the URL stored in the database ), the embed may appear working in the
edit post screen, but would appear broken when rendered on frontend.
Steps to reproduce / debug the issue would be:
1. adding a mu-plugin blocking any oEmbeds ( eg.: `add_filter(
'pre_oembed_result', function() { return false; }, 11 );` ),
1. create a new post with YouTube oembed
1. view the post, see it's broken
1. remove the mu-plugin
1. open the post in editor, see YouTube working, eventually try to re-save
the post
1. view the post on front-end, see it's still broken
The above steps do not produce broken oEmbed in the last step, when all
are performed in the classic editor.
While there is a WP CLI command for refreshing the oEmbed cache, there is
no longer an easy way for a user w/o access to the server to refresh the
oEmbed cache (which used to be as easy as re-saving the post).
Perhaps a cache refreshing logic could be introduced server-side, during
the post update action?
--
Ticket URL: <https://core.trac.wordpress.org/ticket/52935>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list