Make WordPress Core


Ignore:
Timestamp:
01/17/2022 10:40:51 PM (3 years ago)
Author:
hellofromTonya
Message:

Editor: Explicitly load remote block patterns in the block and site editor screens.

Remote block patterns from wp.org were to be loaded through a callback hooked into the current_screen filter. Within 2 callbacks, i.e. _load_remote_featured_patterns() and _load_remote_block_patterns(), a guard clause bailed out early if the $current_screen->is_block_editor is false.

However, the current_screen filter is unreliable to detect the block editor. Why? In the block and Site Editor screens, $current_scren->is_block_editor is not set until after the filter is executed. Whoopsie.

This commit no longer uses the current_screen filter. Instead, it explicitly loads the remote block patterns by invoking both private functions (now not callbacks) directly in the screen files for the block and site editor screens.

With this change, passing WP_Screen object into these functions is no longer needed. As the _load_remote_block_patterns() function was introduced in 5.8.0, its function parameter is now deprecated and the guard clause retained for backwards compatibility.

Follow-up to [51021], [52377].

Props poena, noisysocks, peterwilsoncc, hellofromTonya, audrasjb.
Fixes #54806.

File:
1 edited

Legend:

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

    r52377 r52593  
    4949 *
    5050 * @since 5.8.0
     51 * @since 5.9.0 The $current_screen argument was removed.
    5152 *
    52  * @param WP_Screen $current_screen The screen that the current request was triggered from.
     53 * @param WP_Screen $deprecated Unused. Formerly the screen that the current request was triggered from.
    5354 */
    54 function _load_remote_block_patterns( $current_screen ) {
    55     if ( ! $current_screen->is_block_editor ) {
    56         return;
     55function _load_remote_block_patterns( $deprecated = null ) {
     56    if ( ! empty( $deprecated ) ) {
     57        _deprecated_argument( __FUNCTION__, '5.9.0' );
     58        $current_screen = $deprecated;
     59        if ( ! $current_screen->is_block_editor ) {
     60            return;
     61        }
    5762    }
    5863
     
    8994 *
    9095 * @since 5.9.0
    91  *
    92  * @param WP_Screen $current_screen The screen that the current request was triggered from.
    9396 */
    94 function _load_remote_featured_patterns( $current_screen ) {
    95     if ( ! $current_screen->is_block_editor ) {
    96         return;
    97     }
    98 
     97function _load_remote_featured_patterns() {
    9998    $supports_core_patterns = get_theme_support( 'core-block-patterns' );
    10099
Note: See TracChangeset for help on using the changeset viewer.