Make WordPress Core

Changeset 54323

Timestamp:
09/27/2022 07:38:40 AM (23 months 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
     243
     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   
     250   
     251       
     252    }
     253
     254    return $e;
    248255}
    249256
Note: See TracChangeset for help on using the changeset viewer.