Make WordPress Core

Changeset 56776


Ignore:
Timestamp:
10/04/2023 06:45:16 PM (14 months ago)
Author:
audrasjb
Message:

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

Props lgladdy, masteradhoc, audrasjb, rajinsharwar, azaozz.
Merges [56527] to the 6.3 branch.
Fixes #59018.

Location:
branches/6.3
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/6.3

  • branches/6.3/src/wp-includes/blocks.php

    r56244 r56776  
    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
     
    262262        // Determine if the block style was registered in a theme, by checking if the script path starts with either
    263263        // the parent (template) or child (stylesheet) directory path.
    264         $is_parent_theme_block = str_starts_with( $style_path_norm, $template_path_norm );
    265         $is_child_theme_block  = str_starts_with( $style_path_norm, $stylesheet_path_norm );
     264        $is_parent_theme_block = str_starts_with( $style_path_norm, trailingslashit( $template_path_norm ) );
     265        $is_child_theme_block  = str_starts_with( $style_path_norm, trailingslashit( $stylesheet_path_norm ) );
    266266        $is_theme_block        = ( $is_parent_theme_block || $is_child_theme_block );
    267267
  • branches/6.3/tests/phpunit/tests/blocks/register.php

    r56044 r56776  
    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.