WordPress.org

Make WordPress Core

Ticket #42645: 42645.6.diff

File 42645.6.diff, 6.1 KB (added by dinhtungdu, 2 years ago)
  • src/wp-admin/edit-form-blocks.php

     
    184184
    185185if ( $editor_styles && current_theme_supports( 'editor-styles' ) ) {
    186186        foreach ( $editor_styles as $style ) {
    187                 if ( preg_match( '~^(https?:)?//~', $style ) ) {
    188                         $response = wp_remote_get( $style );
     187                if ( preg_match( '~^(https?:)?//~', $style['file'] ) ) {
     188                        $style_url = $style['file'];
     189                        if ( isset( $style['version'] ) && $style['version'] ) {
     190                                $style_url .= '?ver=' . $style['version'];
     191                        }
     192                        $response = wp_remote_get( $style_url );
    189193                        if ( ! is_wp_error( $response ) ) {
    190194                                $styles[] = array(
    191195                                        'css' => wp_remote_retrieve_body( $response ),
    192196                                );
    193197                        }
    194198                } else {
    195                         $file = get_theme_file_path( $style );
    196                         if ( is_file( $file ) ) {
     199                        $file = get_theme_file_path( $style['file'] );
     200                        if ( is_file( $style['file'] ) ) {
    197201                                $styles[] = array(
    198                                         'css'     => file_get_contents( $file ),
    199                                         'baseURL' => get_theme_file_uri( $style ),
     202                                        'css'     => file_get_contents( $style['file'] ),
     203                                        'baseURL' => get_theme_file_uri( $style['file'] ),
    200204                                );
    201205                        }
    202206                }
  • src/wp-includes/theme.php

     
    19271927 * It is a better option to use that class and add any RTL styles to the main stylesheet.
    19281928 *
    19291929 * @since 3.0.0
     1930 * @since 5.3.0 Add version support.
    19301931 *
    19311932 * @global array $editor_styles
    19321933 *
    19331934 * @param array|string $stylesheet Optional. Stylesheet name or array thereof, relative to theme root.
    19341935 *                                 Defaults to 'editor-style.css'
     1936 * @param array|string $version   Optional. Stylesheet version or array thereof.
     1937 *                                 The versions will be attach to stylesheets
     1938 *                                 respectively.
    19351939 */
    1936 function add_editor_style( $stylesheet = 'editor-style.css' ) {
     1940function add_editor_style( $stylesheet = 'editor-style.css', $version = '' ) {
    19371941        global $editor_styles;
    19381942
    19391943        add_theme_support( 'editor-style' );
    19401944
    19411945        $editor_styles = (array) $editor_styles;
    19421946        $stylesheet    = (array) $stylesheet;
     1947        $version       = (array) $version;
     1948        $stylesheets   = array();
     1949
     1950        for ( $i = 0; $i < count( $stylesheet ); $i++ ) {
     1951                $stylesheets[ $i ] = array( 'file' => $stylesheet[ $i ] );
     1952                if ( isset( $version[ $i ] ) && $version[ $i ] ) {
     1953                        $stylesheets[ $i ]['version'] = $version[ $i ];
     1954                }
     1955        }
    19431956
    19441957        if ( is_rtl() ) {
    19451958                $rtl_stylesheet = str_replace( '.css', '-rtl.css', $stylesheet[0] );
    1946                 $stylesheet[]   = $rtl_stylesheet;
     1959                if ( isset( $version[0] ) && $version[0] ) {
     1960                        $stylesheets[] = array(
     1961                                'file'    => $rtl_stylesheet,
     1962                                'version' => $version[0],
     1963                        );
     1964                } else {
     1965                        $stylesheets[] = array( 'file' => $rtl_stylesheet );
     1966                }
    19471967        }
    19481968
    1949         $editor_styles = array_merge( $editor_styles, $stylesheet );
     1969        $editor_styles = array_merge( $editor_styles, $stylesheets );
    19501970}
    19511971
    19521972/**
     
    19791999 * @return array If registered, a list of editor stylesheet URLs.
    19802000 */
    19812001function get_editor_stylesheets() {
    1982         $stylesheets = array();
    1983         // load editor_style.css if the current theme supports it
    1984         if ( ! empty( $GLOBALS['editor_styles'] ) && is_array( $GLOBALS['editor_styles'] ) ) {
    1985                 $editor_styles = $GLOBALS['editor_styles'];
    1986 
    1987                 $editor_styles = array_unique( array_filter( $editor_styles ) );
    1988                 $style_uri     = get_stylesheet_directory_uri();
    1989                 $style_dir     = get_stylesheet_directory();
    1990 
    1991                 // Support externally referenced styles (like, say, fonts).
    1992                 foreach ( $editor_styles as $key => $file ) {
    1993                         if ( preg_match( '~^(https?:)?//~', $file ) ) {
    1994                                 $stylesheets[] = esc_url_raw( $file );
    1995                                 unset( $editor_styles[ $key ] );
    1996                         }
     2002        /**
     2003         * Return eary if no editor style is found.
     2004         *
     2005         * @since 5.3.0
     2006         */
     2007        if (
     2008                empty( $GLOBALS['editor_styles'] )
     2009                || ! is_array( $GLOBALS['editor_styles'] )
     2010        ) {
     2011                return apply_filters( 'editor_stylesheets', array() );
     2012        }
     2013
     2014        $stylesheets   = array();
     2015        $editor_styles = $GLOBALS['editor_styles'];
     2016
     2017        $editor_styles = array_filter(
     2018                $editor_styles,
     2019                function( $item ) {
     2020                        return ! ! strpos( $item['file'], '.css' );
    19972021                }
     2022        );
     2023        $style_uri     = get_stylesheet_directory_uri();
     2024        $style_dir     = get_stylesheet_directory();
    19982025
    1999                 // Look in a parent theme first, that way child theme CSS overrides.
    2000                 if ( is_child_theme() ) {
    2001                         $template_uri = get_template_directory_uri();
    2002                         $template_dir = get_template_directory();
    2003 
    2004                         foreach ( $editor_styles as $key => $file ) {
    2005                                 if ( $file && file_exists( "$template_dir/$file" ) ) {
    2006                                         $stylesheets[] = "$template_uri/$file";
    2007                                 }
    2008                         }
     2026        // Support externally referenced styles (like, say, fonts).
     2027        foreach ( $editor_styles as $key => $file ) {
     2028                if ( preg_match( '~^(https?:)?//~', $file ) ) {
     2029                        $stylesheets[] = esc_url_raw( $file );
     2030                        unset( $editor_styles[ $key ] );
    20092031                }
     2032        }
    20102033
    2011                 foreach ( $editor_styles as $file ) {
    2012                         if ( $file && file_exists( "$style_dir/$file" ) ) {
    2013                                 $stylesheets[] = "$style_uri/$file";
     2034        // Look in a parent theme first, that way child theme CSS overrides.
     2035        if ( is_child_theme() ) {
     2036                $template_uri = get_template_directory_uri();
     2037                $template_dir = get_template_directory();
     2038
     2039                foreach ( $editor_styles as $key => $style ) {
     2040                        if ( ! file_exists( $template_dir . '/' . $style['file'] ) ) {
     2041                                continue;
     2042                        }
     2043                        if ( isset( $style['version'] ) && $style['version'] ) {
     2044                                $stylesheets[] = $template_uri . '/' . $style['file'] . '?ver=' . $style['version'];
     2045                        } else {
     2046                                $stylesheets[] = $template_uri . '/' . $style['file'];
    20142047                        }
    20152048                }
    20162049        }
    20172050
     2051        foreach ( $editor_styles as $key => $style ) {
     2052                if ( ! file_exists( $style_dir . '/' . $style['file'] ) ) {
     2053                        continue;
     2054                }
     2055                if ( isset( $style['version'] ) && $style['version'] ) {
     2056                        $stylesheets[] = $style_uri . '/' . $style['file'] . '?ver=' . $style['version'];
     2057                } else {
     2058                        $stylesheets[] = $style_uri . '/' . $style['file'];
     2059                }
     2060        }
     2061
    20182062        /**
    20192063         * Filters the array of stylesheets applied to the editor.
    20202064         *