Editor: Conditionally load registered styles for block variations

In WordPress 5.8 we added the ability to only load styles for blocks when these blocks are rendered. However, these optimizations left out block-styles that get added using the register_block_style() function/API.

Props aristath.
Fixes #53616.


Built from https://develop.svn.wordpress.org/trunk@51471


git-svn-id: http://core.svn.wordpress.org/trunk@51082 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
gziolo 2021-07-22 08:38:04 +00:00
parent 352fe2a88f
commit 60c39d7805
2 changed files with 30 additions and 4 deletions

View File

@ -2436,13 +2436,39 @@ function wp_enqueue_registered_block_scripts_and_styles() {
function enqueue_block_styles_assets() { function enqueue_block_styles_assets() {
$block_styles = WP_Block_Styles_Registry::get_instance()->get_all_registered(); $block_styles = WP_Block_Styles_Registry::get_instance()->get_all_registered();
foreach ( $block_styles as $styles ) { foreach ( $block_styles as $block_name => $styles ) {
foreach ( $styles as $style_properties ) { foreach ( $styles as $style_properties ) {
if ( isset( $style_properties['style_handle'] ) ) { if ( isset( $style_properties['style_handle'] ) ) {
// If the site loads separate styles per-block, enqueue the stylesheet on render.
if ( wp_should_load_separate_core_block_assets() ) {
add_filter(
'render_block',
function( $html, $block ) use ( $style_properties ) {
wp_enqueue_style( $style_properties['style_handle'] );
return $html;
}
);
} else {
wp_enqueue_style( $style_properties['style_handle'] ); wp_enqueue_style( $style_properties['style_handle'] );
} }
}
if ( isset( $style_properties['inline_style'] ) ) { if ( isset( $style_properties['inline_style'] ) ) {
wp_add_inline_style( 'wp-block-library', $style_properties['inline_style'] );
// Default to "wp-block-library".
$handle = 'wp-block-library';
// If the site loads separate styles per-block, check if the block has a stylesheet registered.
if ( wp_should_load_separate_core_block_assets() ) {
$block_stylesheet_handle = generate_block_asset_handle( $block_name, 'style' );
global $wp_styles;
if ( isset( $wp_styles->registered[ $block_stylesheet_handle ] ) ) {
$handle = $block_stylesheet_handle;
}
}
// Add inline styles to the calculated handle.
wp_add_inline_style( $handle, $style_properties['inline_style'] );
} }
} }
} }

View File

@ -13,7 +13,7 @@
* *
* @global string $wp_version * @global string $wp_version
*/ */
$wp_version = '5.9-alpha-51470'; $wp_version = '5.9-alpha-51471';
/** /**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema. * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.