Make WordPress Core


Ignore:
Timestamp:
09/27/2022 07:38:40 AM (4 years ago)
Author:
gziolo
Message:

Blocks: Fix 404 error for core styles with no file

[54155] broke loading of style.css files, namely it was enqueuing style.css files that don't exist on the frontend, which lead to 404 HTTO errors. All these style.css files don't exist for core blocks as they should be registered style handlers without a file path.

Follow-up to [54155].
Props tobiasbg, nendeb55.
Fixes #56408, #56614.

File:
1 edited

Legend:

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

    r54309 r54323  
    209209
    210210        // Check whether styles should have a ".min" suffix or not.
    211         $suffix    = SCRIPT_DEBUG ? '' : '.min';
    212         $style_uri = plugins_url( $style_path, $metadata['file'] );
     211        $suffix = SCRIPT_DEBUG ? '' : '.min';
    213212        if ( $is_core_block ) {
    214213                $style_path = "style$suffix.css";
    215                 $style_uri  = includes_url( 'blocks/' . str_replace( 'core/', '', $metadata['name'] ) . "/style$suffix.css" );
    216         }
    217 
     214        }
    218215        $style_path_norm = wp_normalize_path( realpath( dirname( $metadata['file'] ) . '/' . $style_path ) );
    219         $is_theme_block  = 0 === strpos( $style_path_norm, $theme_path_norm );
    220 
    221         if ( $is_theme_block ) {
    222                 $style_uri = get_theme_file_uri( str_replace( $theme_path_norm, '', $style_path_norm ) );
    223         }
    224 
    225         $style_handle   = generate_block_asset_handle( $metadata['name'], $field_name, $index );
    226         $has_style_file = false !== $style_path_norm;
    227         $version        = ! $is_core_block && isset( $metadata['version'] ) ? $metadata['version'] : false;
    228         $style_uri      = $has_style_file ? $style_uri : false;
    229         $result         = wp_register_style(
     216        $has_style_file  = '' !== $style_path_norm;
     217        if ( $has_style_file ) {
     218                $style_uri      = plugins_url( $style_path, $metadata['file'] );
     219                $is_theme_block = str_starts_with( $style_path_norm, $theme_path_norm );
     220                if ( $is_theme_block ) {
     221                        $style_uri = get_theme_file_uri( str_replace( $theme_path_norm, '', $style_path_norm ) );
     222                } elseif ( $is_core_block ) {
     223                        $style_uri  = includes_url( 'blocks/' . str_replace( 'core/', '', $metadata['name'] ) . "/style$suffix.css" );
     224                }
     225        } else {
     226                $style_uri = false;
     227        }
     228
     229        $style_handle = generate_block_asset_handle( $metadata['name'], $field_name, $index );
     230        $version      = ! $is_core_block && isset( $metadata['version'] ) ? $metadata['version'] : false;
     231        $result       = wp_register_style(
    230232                $style_handle,
    231233                $style_uri,
     
    233235                $version
    234236        );
    235         if ( file_exists( str_replace( '.css', '-rtl.css', $style_path_norm ) ) ) {
    236                 wp_style_add_data( $style_handle, 'rtl', 'replace' );
    237         }
     237        if ( ! $result ) {
     238                return false;
     239        }
     240
    238241        if ( $has_style_file ) {
     242                if ( file_exists( str_replace( '.css', '-rtl.css', $style_path_norm ) ) ) {
     243                        wp_style_add_data( $style_handle, 'rtl', 'replace' );
     244                }
     245
    239246                wp_style_add_data( $style_handle, 'path', $style_path_norm );
    240         }
    241 
    242         $rtl_file = str_replace( "$suffix.css", "-rtl$suffix.css", $style_path_norm );
    243         if ( is_rtl() && file_exists( $rtl_file ) ) {
    244                 wp_style_add_data( $style_handle, 'path', $rtl_file );
    245         }
    246 
    247         return $result ? $style_handle : false;
     247
     248                $rtl_file = str_replace( "{$suffix}.css", "-rtl{$suffix}.css", $style_path_norm );
     249                if ( is_rtl() && file_exists( $rtl_file ) ) {
     250                        wp_style_add_data( $style_handle, 'path', $rtl_file );
     251                }
     252        }
     253
     254        return $style_handle;
    248255}
    249256
Note: See TracChangeset for help on using the changeset viewer.