Make WordPress Core

Changeset 59968


Ignore:
Timestamp:
03/11/2025 12:31:07 PM (6 weeks ago)
Author:
joemcgill
Message:

Themes: Fix resolution of parent themes.

This fixes an issue introduced in [59885] whereby calling WP_Theme:is_block_theme() before themes are set up resulted in the parent theme to not be resolved. To address this, post support for editor default-mode has been moved to a standalone callback, wp_set_editor_default_mode(), which is called on the after_setup_theme hook. In addition, if WP_Theme::is_block_theme is called too early, a _doing_it_wrong() error will now be thrown.

Props fabiankaegy, joemcgill, peterwilsoncc, jorbin, krupajnanda, riddhidave, ugyensupport, navi161, manojmaharrshi, Ankit K Gupta, narenin, shailu25, pooja1210.
Fixes #63062.

Location:
trunk/src/wp-includes
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/class-wp-theme.php

    r59872 r59968  
    15771577     */
    15781578    public function is_block_theme() {
     1579        if ( ! did_action( 'setup_theme' ) ) {
     1580            _doing_it_wrong( __METHOD__, __( 'This method should not be called before themes are set up.' ), '6.8.0' );
     1581            return false;
     1582        }
     1583
    15791584        if ( isset( $this->block_theme ) ) {
    15801585            return $this->block_theme;
  • trunk/src/wp-includes/default-filters.php

    r59838 r59968  
    738738add_action( 'wp_footer', 'the_block_template_skip_link' ); // Retained for backwards-compatibility. Unhooked by wp_enqueue_block_template_skip_link().
    739739add_action( 'after_setup_theme', 'wp_enable_block_templates', 1 );
     740add_action( 'after_setup_theme', 'wp_set_editor_default_mode', 2 ); // Run after enabling block templates.
    740741add_action( 'wp_loaded', '_add_template_loader_filters' );
    741742
  • trunk/src/wp-includes/post.php

    r59885 r59968  
    6969        )
    7070    );
    71 
    72     // Enhance page editor for block themes by rendering template and content blocks.
    73     if ( wp_is_block_theme() && current_theme_supports( 'block-templates' ) ) {
    74         add_post_type_support( 'page', 'editor', array( 'default-mode' => 'template-locked' ) );
    75     }
    7671
    7772    register_post_type(
     
    85308525    );
    85318526}
     8527
     8528/**
     8529 * Sets the default editor mode based on support for block templates.
     8530 *
     8531 * @since 6.8.0
     8532 */
     8533function wp_set_editor_default_mode() {
     8534    if ( wp_is_block_theme() && current_theme_supports( 'block-templates' ) ) {
     8535        add_post_type_support( 'page', 'editor', array( 'default-mode' => 'template-locked' ) );
     8536    }
     8537}
Note: See TracChangeset for help on using the changeset viewer.