Make WordPress Core

Changeset 56527


Ignore:
Timestamp:
09/06/2023 09:22:28 PM (7 months ago)
Author:
azaozz
Message:

Editor: Fix loading of assets in blocks in child themes where the directory name starts with the parent theme's directory name. Example: twentyseventeen and twentyseventeen-child.

Props: lgladdy, masteradhoc, audrasjb, rajinsharwar, azaozz.
Fixes: #59018.

Location:
trunk
Files:
2 edited

Legend:

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

    r56455 r56527  
    151151     * the parent (template) or child (stylesheet) directory path.
    152152     */
    153     $is_parent_theme_block = str_starts_with( $script_path_norm, $template_path_norm );
    154     $is_child_theme_block  = str_starts_with( $script_path_norm, $stylesheet_path_norm );
     153    $is_parent_theme_block = str_starts_with( $script_path_norm, trailingslashit( $template_path_norm ) );
     154    $is_child_theme_block  = str_starts_with( $script_path_norm, trailingslashit( $stylesheet_path_norm ) );
    155155    $is_theme_block        = ( $is_parent_theme_block || $is_child_theme_block );
    156156
     
    271271        // Determine if the block style was registered in a theme, by checking if the script path starts with either
    272272        // the parent (template) or child (stylesheet) directory path.
    273         $is_parent_theme_block = str_starts_with( $style_path_norm, $template_path_norm );
    274         $is_child_theme_block  = str_starts_with( $style_path_norm, $stylesheet_path_norm );
     273        $is_parent_theme_block = str_starts_with( $style_path_norm, trailingslashit( $template_path_norm ) );
     274        $is_child_theme_block  = str_starts_with( $style_path_norm, trailingslashit( $stylesheet_path_norm ) );
    275275        $is_theme_block        = ( $is_parent_theme_block || $is_child_theme_block );
    276276
  • trunk/tests/phpunit/tests/blocks/register.php

    r56421 r56527  
    271271
    272272        $this->assertSame( 'unit-tests-test-block-script', $result );
     273
     274        // Test the behavior directly within the unit test
     275        $this->assertFalse(
     276            strpos(
     277                wp_normalize_path( realpath( dirname( $metadata['file'] ) . '/' . $metadata['script'] ) ),
     278                trailingslashit( wp_normalize_path( get_template_directory() ) )
     279            ) === 0
     280        );
     281
     282        $this->assertFalse(
     283            strpos(
     284                wp_normalize_path( realpath( dirname( $metadata['file'] ) . '/' . $metadata['script'] ) ),
     285                trailingslashit( wp_normalize_path( get_stylesheet_directory() ) )
     286            ) === 0
     287        );
    273288    }
    274289
     
    438453            wp_normalize_path( realpath( DIR_TESTDATA . '/blocks/notice/block.css' ) ),
    439454            wp_normalize_path( wp_styles()->get_data( 'unit-tests-test-block-style', 'path' ) )
     455        );
     456
     457        // Test the behavior directly within the unit test
     458        $this->assertFalse(
     459            strpos(
     460                wp_normalize_path( realpath( dirname( $metadata['file'] ) . '/' . $metadata['style'] ) ),
     461                trailingslashit( wp_normalize_path( get_template_directory() ) )
     462            ) === 0
     463        );
     464
     465        $this->assertFalse(
     466            strpos(
     467                wp_normalize_path( realpath( dirname( $metadata['file'] ) . '/' . $metadata['style'] ) ),
     468                trailingslashit( wp_normalize_path( get_stylesheet_directory() ) )
     469            ) === 0
    440470        );
    441471    }
Note: See TracChangeset for help on using the changeset viewer.