Make WordPress Core


Ignore:
Timestamp:
10/27/2023 07:02:54 PM (12 months ago)
Author:
joemcgill
Message:

Upgrade/Install: Skip registering theme block patterns during the upgrade process.

This fixes a bug during the database upgrade process where a theme's functions.php file may not be loaded, leading to potential exceptions if the theme's pattern files use symbols (classes, functions, constants, etc.) that are declared only when the functions.php file is loaded. To do so, a check for wp_get_active_and_valid_themes() is added early to _register_theme_block_patterns(), which returns early if no active or valid themes are returned.

Props fabiankaegy, rajinsharwar, pbiron, huzaifaalmesbah, hellofromTonya, peterwilsoncc, joemcgill.
Fixes #59723.

File:
1 edited

Legend:

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

    r56978 r57021  
    329329 */
    330330function _register_theme_block_patterns() {
     331
     332    /*
     333     * During the bootstrap process, a check for active and valid themes is run.
     334     * If no themes are returned, the theme's functions.php file will not be loaded,
     335     * which can lead to errors if patterns expect some variables or constants to
     336     * already be set at this point, so bail early if that is the case.
     337     */
     338    if ( empty( wp_get_active_and_valid_themes() ) ) {
     339        return;
     340    }
     341
    331342    /*
    332343     * Register patterns for the active theme. If the theme is a child theme,
Note: See TracChangeset for help on using the changeset viewer.