Make WordPress Core


Ignore:
Timestamp:
07/13/2023 11:32:19 AM (15 months ago)
Author:
spacedmonkey
Message:

Editor: Lazily load Duotone settings only when needed.

Introduced in [56101] the WP_Duotone class, hooks into the wp_loaded action to load duotone style data from global styles. Hooking in early in the bootstrap process caused a number of problems. This hook, triggered an error on installing, as this lookup for global styles, would result in a global post trying to be created, even before the table existed. Additionally, this implementation caused a severe performance regression, as duotone styling data was loaded unnecessarily for requests that did not require such data, such as REST API calls or actions within the wp-admin interface.

In this change, refactor the WP_Duotone to lazily load the global styles and theme.json data, only when a block that supports duotone is encountered. The method render_duotone_support was change to take a third parameter to reuse the existing WP_Block_Type object passed to the filter, to save it being looked up again. The code has also got improved type checking and the use of the util function block_has_support. Furthermore, the code's readability has been improved, along with enhancements to the documentation blocks.

Props Chouby, spacedmonkey, SergeyBiryukov, swissspidy, costdev, joemcgill, flixos90, mukesh27, nazmul111, ajlende, isabel_brison.
Fixes #58673.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/block-supports/duotone.php

    r56101 r56226  
    4141);
    4242
    43 // Set up metadata prior to rendering any blocks.
    44 add_action( 'wp_loaded', array( 'WP_Duotone', 'set_global_styles_presets' ), 10 );
    45 add_action( 'wp_loaded', array( 'WP_Duotone', 'set_global_style_block_names' ), 10 );
    46 
    4743// Add classnames to blocks using duotone support.
    48 add_filter( 'render_block', array( 'WP_Duotone', 'render_duotone_support' ), 10, 2 );
     44add_filter( 'render_block', array( 'WP_Duotone', 'render_duotone_support' ), 10, 3 );
    4945
    5046// Enqueue styles.
Note: See TracChangeset for help on using the changeset viewer.