[wp-trac] [WordPress Trac] #44632: Properly enqueue wp-embed

WordPress Trac noreply at wordpress.org
Thu Dec 16 23:27:42 UTC 2021


#44632: Properly enqueue wp-embed
-------------------------------------+-------------------------------------
 Reporter:  alpipego                 |       Owner:  westonruter
     Type:  enhancement              |      Status:  reopened
 Priority:  normal                   |   Milestone:  5.9
Component:  Embeds                   |     Version:  4.4
 Severity:  normal                   |  Resolution:
 Keywords:  has-patch has-unit-      |     Focuses:  javascript,
  tests                              |  performance
-------------------------------------+-------------------------------------
Changes (by westonruter):

 * status:  closed => reopened
 * resolution:  fixed =>


Comment:

 It turns out that the approach taken here doesn't work with block-based
 themes like TT2, as [https://github.com/WordPress/wordpress-
 develop/pull/1745#issuecomment-995560177 discovered] by @kafleg. Given
 this old action code:

 {{{#!php
 <?php
 add_action( 'wp_head', 'wp_oembed_add_host_js' );
 }}}

 The changes introduced in this ticket involve making
 `wp_oembed_add_host_js()` do simply:

 {{{#!php
 <?php
 add_filter( 'embed_oembed_html', 'wp_maybe_enqueue_oembed_host_js' );
 }}}

 The problem is that with block-based themes, `do_blocks()` runs before
 `wp_head` runs when `get_the_block_template_html()` is called. This means
 that the `embed_oembed_html` filter would have already applied run before
 `wp_head` is done, as seen in [https://github.com/WordPress/wordpress-
 develop/blob/trunk/src/wp-includes/template-canvas.php template-
 canvas.php]:

 {{{#!php
 <?php
 /*
  * Get the template HTML.
  * This needs to run before <head> so that blocks can add scripts and
 styles in wp_head().
  */
 $template_html = get_the_block_template_html();
 ?><!DOCTYPE html>
 <html <?php language_attributes(); ?>>
 <head>
         <meta charset="<?php bloginfo( 'charset' ); ?>" />
         <?php wp_head(); ?>
 </head>

 <body <?php body_class(); ?>>
 <?php wp_body_open(); ?>

 <?php echo $template_html; // phpcs:ignore WordPress.Security.EscapeOutput
 ?>

 <?php wp_footer(); ?>
 </body>
 </html>
 }}}

 If we want to maintain back-compat for allowing authors to disable the
 oEmbed host JS via:

 {{{#!php
 <?php
 remove_action( 'wp_head', 'wp_oembed_add_host_js' )
 }}}

 Then I think what we need to do is something like this:
 https://github.com/WordPress/wordpress-develop/pull/2059

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


More information about the wp-trac mailing list