diff -r 48c4eec2b7e6 -r 8c2e4d02f4ef wp/wp-includes/script-loader.php --- a/wp/wp-includes/script-loader.php Fri Sep 05 18:40:08 2025 +0200 +++ b/wp/wp-includes/script-loader.php Fri Sep 05 18:52:52 2025 +0200 @@ -54,11 +54,10 @@ script_concat_settings(); - $compressed = $compress_scripts && $concatenate_scripts && isset( $_SERVER['HTTP_ACCEPT_ENCODING'] ) - && false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip' ) && ! $force_uncompressed; + $compressed = $compress_scripts && $concatenate_scripts && ! $force_uncompressed; /* - * Load tinymce.js when running from /src, otherwise load wp-tinymce.js.gz (in production) + * Load tinymce.js when running from /src, otherwise load wp-tinymce.js (in production) * or tinymce.min.js (when SCRIPT_DEBUG is true). */ if ( $compressed ) { @@ -97,7 +96,6 @@ 'lodash', 'wp-polyfill-fetch', 'wp-polyfill-formdata', - 'wp-polyfill-importmap', 'wp-polyfill-node-contains', 'wp-polyfill-url', 'wp-polyfill-dom-rect', @@ -108,22 +106,21 @@ ); $vendor_scripts_versions = array( - 'react' => '18.3.1', - 'react-dom' => '18.3.1', + 'react' => '18.3.1.1', // Final .1 due to switch to UMD build, can be removed in the next update. + 'react-dom' => '18.3.1.1', // Final .1 due to switch to UMD build, can be removed in the next update. 'react-jsx-runtime' => '18.3.1', - 'regenerator-runtime' => '0.14.0', - 'moment' => '2.29.4', + 'regenerator-runtime' => '0.14.1', + 'moment' => '2.30.1', 'lodash' => '4.17.21', - 'wp-polyfill-fetch' => '3.6.17', + 'wp-polyfill-fetch' => '3.6.20', 'wp-polyfill-formdata' => '4.0.10', 'wp-polyfill-node-contains' => '4.8.0', 'wp-polyfill-url' => '3.6.4', 'wp-polyfill-dom-rect' => '4.8.0', 'wp-polyfill-element-closest' => '3.0.2', 'wp-polyfill-object-fit' => '2.3.5', - 'wp-polyfill-inert' => '3.1.2', + 'wp-polyfill-inert' => '3.1.3', 'wp-polyfill' => '3.15.0', - 'wp-polyfill-importmap' => '1.8.2', ); foreach ( $vendor_scripts as $handle => $dependencies ) { @@ -613,7 +610,7 @@ } if ( ! empty( $editor_settings['tinymce'] ) && is_array( $editor_settings['tinymce'] ) ) { - array_merge( $tinymce_settings, $editor_settings['tinymce'] ); + $tinymce_settings = array_merge( $tinymce_settings, $editor_settings['tinymce'] ); } /** This filter is documented in wp-includes/class-wp-editor.php */ @@ -684,7 +681,13 @@ static $suffixes; if ( null === $suffixes ) { - // Include an unmodified $wp_version. + /* + * Include an unmodified $wp_version. + * + * Note: wp_get_wp_version() is not used here, as this file can be included + * via wp-admin/load-scripts.php or wp-admin/load-styles.php, in which case + * wp-includes/functions.php is not loaded. + */ require ABSPATH . WPINC . '/version.php'; /* @@ -751,9 +754,31 @@ ) ); - $scripts->add( 'common', "/wp-admin/js/common$suffix.js", array( 'jquery', 'hoverIntent', 'utils' ), false, 1 ); + $scripts->add( 'common', "/wp-admin/js/common$suffix.js", array( 'jquery', 'hoverIntent', 'utils', 'wp-a11y' ), false, 1 ); $scripts->set_translations( 'common' ); + $bulk_action_observer_ids = array( + 'bulk_action' => 'action', + 'changeit' => 'new_role', + ); + did_action( 'init' ) && $scripts->localize( + 'common', + 'bulkActionObserverIds', + /** + * Filters the array of field name attributes for bulk actions. + * + * @since 6.8.1 + * + * @param array $bulk_action_observer_ids { + * An array of field name attributes for bulk actions. + * + * @type string $bulk_action The bulk action field name. Default 'action'. + * @type string $changeit The new role field name. Default 'new_role'. + * } + */ + apply_filters( 'bulk_action_observer_ids', $bulk_action_observer_ids ) + ); + $scripts->add( 'wp-sanitize', "/wp-includes/js/wp-sanitize$suffix.js", array(), false, 1 ); $scripts->add( 'sack', "/wp-includes/js/tw-sack$suffix.js", array(), '1.6.1', 1 ); @@ -807,7 +832,7 @@ 'wpAjax', array( 'noPerm' => __( 'Sorry, you are not allowed to do that.' ), - 'broken' => __( 'Something went wrong.' ), + 'broken' => __( 'An error occurred while processing your request. Please try again later.' ), ) ); @@ -935,7 +960,7 @@ $scripts->add( 'jquery-form', "/wp-includes/js/jquery/jquery.form$suffix.js", array( 'jquery' ), '4.3.0', 1 ); // jQuery plugins. - $scripts->add( 'jquery-color', '/wp-includes/js/jquery/jquery.color.min.js', array( 'jquery' ), '2.2.0', 1 ); + $scripts->add( 'jquery-color', '/wp-includes/js/jquery/jquery.color.min.js', array( 'jquery' ), '3.0.0', 1 ); $scripts->add( 'schedule', '/wp-includes/js/jquery/jquery.schedule.js', array( 'jquery' ), '20m', 1 ); $scripts->add( 'jquery-query', '/wp-includes/js/jquery/jquery.query.js', array( 'jquery' ), '2.2.3', 1 ); $scripts->add( 'jquery-serialize-object', '/wp-includes/js/jquery/jquery.serialize-object.js', array( 'jquery' ), '0.2-wp', 1 ); @@ -980,7 +1005,7 @@ /* translators: %s: File name. */ 'file_exceeds_size_limit' => __( '%s exceeds the maximum upload size for this site.' ), 'zero_byte_file' => __( 'This file is empty. Please try another.' ), - 'invalid_filetype' => __( 'Sorry, you are not allowed to upload this file type.' ), + 'invalid_filetype' => __( 'This file cannot be processed by the web server.' ), 'not_an_image' => __( 'This file is not an image. Please try another.' ), 'image_memory_exceeded' => __( 'Memory exceeded. Please try another smaller file.' ), 'image_dimensions_exceeded' => __( 'This is larger than the maximum size. Please try another.' ), @@ -1004,11 +1029,11 @@ /* translators: %s: File name. */ 'error_uploading' => __( '“%s” has failed to upload.' ), 'unsupported_image' => __( 'This image cannot be displayed in a web browser. For best results convert it to JPEG before uploading.' ), - 'noneditable_image' => __( 'This image cannot be processed by the web server. Convert it to JPEG or PNG before uploading.' ), + 'noneditable_image' => __( 'The web server cannot generate responsive image sizes for this image. Convert it to JPEG or PNG before uploading.' ), 'file_url_copied' => __( 'The file URL has been copied to your clipboard' ), ); - $scripts->add( 'moxiejs', "/wp-includes/js/plupload/moxie$suffix.js", array(), '1.3.5' ); + $scripts->add( 'moxiejs', "/wp-includes/js/plupload/moxie$suffix.js", array(), '1.3.5.1' ); $scripts->add( 'plupload', "/wp-includes/js/plupload/plupload$suffix.js", array( 'moxiejs' ), '2.1.9' ); // Back compat handles: foreach ( array( 'all', 'html5', 'flash', 'silverlight', 'html4' ) as $handle ) { @@ -1033,8 +1058,8 @@ $scripts->add( 'json2', "/wp-includes/js/json2$suffix.js", array(), '2015-05-03' ); did_action( 'init' ) && $scripts->add_data( 'json2', 'conditional', 'lt IE 8' ); - $scripts->add( 'underscore', "/wp-includes/js/underscore$dev_suffix.js", array(), '1.13.4', 1 ); - $scripts->add( 'backbone', "/wp-includes/js/backbone$dev_suffix.js", array( 'underscore', 'jquery' ), '1.5.0', 1 ); + $scripts->add( 'underscore', "/wp-includes/js/underscore$dev_suffix.js", array(), '1.13.7', 1 ); + $scripts->add( 'backbone', "/wp-includes/js/backbone$dev_suffix.js", array( 'underscore', 'jquery' ), '1.6.0', 1 ); $scripts->add( 'wp-util', "/wp-includes/js/wp-util$suffix.js", array( 'underscore', 'jquery' ), false, 1 ); did_action( 'init' ) && $scripts->localize( @@ -1214,7 +1239,7 @@ $scripts->add( 'auth-app', "/wp-admin/js/auth-app$suffix.js", array( 'jquery', 'wp-api-request', 'wp-i18n', 'wp-hooks' ), false, 1 ); $scripts->set_translations( 'auth-app' ); - $scripts->add( 'user-profile', "/wp-admin/js/user-profile$suffix.js", array( 'jquery', 'password-strength-meter', 'wp-util' ), false, 1 ); + $scripts->add( 'user-profile', "/wp-admin/js/user-profile$suffix.js", array( 'clipboard', 'jquery', 'password-strength-meter', 'wp-util', 'wp-a11y' ), false, 1 ); $scripts->set_translations( 'user-profile' ); $user_id = isset( $_GET['user_id'] ) ? (int) $_GET['user_id'] : 0; did_action( 'init' ) && $scripts->localize( @@ -1289,7 +1314,7 @@ 'close' => __( 'Close' ), 'action' => __( 'Action' ), 'discardChanges' => __( 'Discard changes' ), - 'cheatin' => __( 'Something went wrong.' ), + 'cheatin' => __( 'An error occurred. Please try again later.' ), 'notAllowedHeading' => __( 'You need a higher level of permission.' ), 'notAllowed' => __( 'Sorry, you are not allowed to customize this site.' ), 'previewIframeTitle' => __( 'Site Preview' ), @@ -1392,7 +1417,7 @@ $scripts->add( 'admin-tags', "/wp-admin/js/tags$suffix.js", array( 'jquery', 'wp-ajax-response' ), false, 1 ); $scripts->set_translations( 'admin-tags' ); - $scripts->add( 'admin-comments', "/wp-admin/js/edit-comments$suffix.js", array( 'wp-lists', 'quicktags', 'jquery-query' ), false, 1 ); + $scripts->add( 'admin-comments', "/wp-admin/js/edit-comments$suffix.js", array( 'wp-lists', 'quicktags', 'jquery-query', 'wp-a11y' ), false, 1 ); $scripts->set_translations( 'admin-comments' ); did_action( 'init' ) && $scripts->localize( 'admin-comments', @@ -1522,7 +1547,13 @@ function wp_default_styles( $styles ) { global $editor_styles; - // Include an unmodified $wp_version. + /* + * Include an unmodified $wp_version. + * + * Note: wp_get_wp_version() is not used here, as this file can be included + * via wp-admin/load-scripts.php or wp-admin/load-styles.php, in which case + * wp-includes/functions.php is not loaded. + */ require ABSPATH . WPINC . '/version.php'; if ( ! defined( 'SCRIPT_DEBUG' ) ) { @@ -1618,6 +1649,7 @@ $styles->add( 'wp-pointer', "/wp-includes/css/wp-pointer$suffix.css", array( 'dashicons' ) ); $styles->add( 'customize-preview', "/wp-includes/css/customize-preview$suffix.css", array( 'dashicons' ) ); $styles->add( 'wp-embed-template-ie', "/wp-includes/css/wp-embed-template-ie$suffix.css" ); + $styles->add( 'wp-empty-template-alert', "/wp-includes/css/wp-empty-template-alert$suffix.css" ); $styles->add_data( 'wp-embed-template-ie', 'conditional', 'lte IE 8' ); // External libraries and friends. @@ -1652,6 +1684,10 @@ $styles->add( 'wp-block-library-theme', "/$block_library_theme_path" ); $styles->add_data( 'wp-block-library-theme', 'path', ABSPATH . $block_library_theme_path ); + $classic_theme_styles_path = WPINC . "/css/classic-themes$suffix.css"; + $styles->add( 'classic-theme-styles', "/$classic_theme_styles_path" ); + $styles->add_data( 'classic-theme-styles', 'path', ABSPATH . $classic_theme_styles_path ); + $styles->add( 'wp-reset-editor-styles', "/wp-includes/css/dist/block-library/reset$suffix.css", @@ -1670,18 +1706,16 @@ array( 'wp-components' ) ); + // Only add CONTENT styles here that should be enqueued in the iframe! $wp_edit_blocks_dependencies = array( 'wp-components', - 'wp-editor', /* * This needs to be added before the block library styles, * The block library styles override the "reset" styles. */ 'wp-reset-editor-styles', 'wp-block-library', - 'wp-reusable-blocks', 'wp-block-editor-content', - 'wp-patterns', ); // Only load the default layout and margin styles for themes without theme.json file. @@ -1740,24 +1774,25 @@ 'edit-widgets' => array( 'wp-widgets', 'wp-block-editor', + 'wp-editor', 'wp-edit-blocks', 'wp-block-library', - 'wp-reusable-blocks', 'wp-patterns', 'wp-preferences', ), 'customize-widgets' => array( 'wp-widgets', 'wp-block-editor', + 'wp-editor', 'wp-edit-blocks', 'wp-block-library', - 'wp-reusable-blocks', 'wp-patterns', 'wp-preferences', ), 'edit-site' => array( 'wp-components', 'wp-block-editor', + 'wp-editor', 'wp-edit-blocks', 'wp-commands', 'wp-preferences', @@ -1800,6 +1835,7 @@ 'customize-preview', 'login', 'site-health', + 'wp-empty-template-alert', // Includes CSS. 'buttons', 'admin-bar', @@ -2085,7 +2121,7 @@ * * @global bool $concatenate_scripts * - * @return array + * @return string[] Handles of the scripts that were printed. */ function print_head_scripts() { global $concatenate_scripts; @@ -2124,7 +2160,7 @@ * @global WP_Scripts $wp_scripts * @global bool $concatenate_scripts * - * @return array + * @return string[] Handles of the scripts that were printed. */ function print_footer_scripts() { global $wp_scripts, $concatenate_scripts; @@ -2205,7 +2241,7 @@ * * @global WP_Scripts $wp_scripts * - * @return array + * @return string[] Handles of the scripts that were printed. */ function wp_print_head_scripts() { global $wp_scripts; @@ -2270,7 +2306,7 @@ * * @global bool $concatenate_scripts * - * @return array + * @return string[] Handles of the styles that were printed. */ function print_admin_styles() { global $concatenate_scripts; @@ -2477,20 +2513,21 @@ * @since 5.8.0 */ function wp_enqueue_global_styles() { - $separate_assets = wp_should_load_separate_core_block_assets(); + $assets_on_demand = wp_should_load_block_assets_on_demand(); $is_block_theme = wp_is_block_theme(); $is_classic_theme = ! $is_block_theme; /* - * Global styles should be printed in the head when loading all styles combined. - * The footer should only be used to print global styles for classic themes with separate core assets enabled. + * Global styles should be printed in the head for block themes, or for classic themes when loading assets on + * demand is disabled, which is the default. + * The footer should only be used for classic themes when loading assets on demand is enabled. * - * See https://core.trac.wordpress.org/ticket/53494. + * See https://core.trac.wordpress.org/ticket/53494 and https://core.trac.wordpress.org/ticket/61965. */ if ( ( $is_block_theme && doing_action( 'wp_footer' ) ) || - ( $is_classic_theme && doing_action( 'wp_footer' ) && ! $separate_assets ) || - ( $is_classic_theme && doing_action( 'wp_enqueue_scripts' ) && $separate_assets ) + ( $is_classic_theme && doing_action( 'wp_footer' ) && ! $assets_on_demand ) || + ( $is_classic_theme && doing_action( 'wp_enqueue_scripts' ) && $assets_on_demand ) ) { return; } @@ -2504,6 +2541,20 @@ $stylesheet = wp_get_global_stylesheet(); + if ( $is_block_theme ) { + /* + * Dequeue the Customizer's custom CSS + * and add it before the global styles custom CSS. + */ + remove_action( 'wp_head', 'wp_custom_css_cb', 101 ); + // Get the custom CSS from the Customizer and add it to the global stylesheet. + $custom_css = wp_get_custom_css(); + $stylesheet .= $custom_css; + + // Add the global styles custom CSS at the end. + $stylesheet .= wp_get_global_stylesheet( array( 'custom-css' ) ); + } + if ( empty( $stylesheet ) ) { return; } @@ -2517,27 +2568,6 @@ } /** - * Enqueues the global styles custom css defined via theme.json. - * - * @since 6.2.0 - */ -function wp_enqueue_global_styles_custom_css() { - if ( ! wp_is_block_theme() ) { - return; - } - - // Don't enqueue Customizer's custom CSS separately. - remove_action( 'wp_head', 'wp_custom_css_cb', 101 ); - - $custom_css = wp_get_custom_css(); - $custom_css .= wp_get_global_styles_custom_css(); - - if ( ! empty( $custom_css ) ) { - wp_add_inline_style( 'global-styles', $custom_css ); - } -} - -/** * Checks if the editor scripts and styles for all registered block types * should be enqueued on the current screen. * @@ -2564,25 +2594,22 @@ } /** - * Checks whether separate styles should be loaded for core blocks on-render. + * Checks whether separate styles should be loaded for core blocks. * - * When this function returns true, other functions ensure that core blocks - * only load their assets on-render, and each block loads its own, individual - * assets. Third-party blocks only load their assets when rendered. + * When this function returns true, other functions ensure that core blocks use their own separate stylesheets. + * When this function returns false, all core blocks will use the single combined 'wp-block-library' stylesheet. * - * When this function returns false, all core block assets are loaded regardless - * of whether they are rendered in a page or not, because they are all part of - * the `block-library/style.css` file. Assets for third-party blocks are always - * enqueued regardless of whether they are rendered or not. + * As a side effect, the return value will by default result in block assets to be loaded on demand, via the + * {@see wp_should_load_block_assets_on_demand()} function. This behavior can be separately altered via that function. * * This only affects front end and not the block editor screens. * + * @since 5.8.0 + * @see @see wp_should_load_block_assets_on_demand() * @see wp_enqueue_registered_block_scripts_and_styles() * @see register_block_style_handle() * - * @since 5.8.0 - * - * @return bool Whether separate assets will be loaded. + * @return bool Whether separate core block assets will be loaded. */ function wp_should_load_separate_core_block_assets() { if ( is_admin() || is_feed() || wp_is_rest_endpoint() ) { @@ -2604,6 +2631,50 @@ } /** + * Checks whether block styles should be loaded only on-render. + * + * When this function returns true, other functions ensure that blocks only load their assets on-render. + * When this function returns false, all block assets are loaded regardless of whether they are rendered in a page. + * + * The default return value depends on the result of {@see wp_should_load_separate_core_block_assets()}, which controls + * whether Core block stylesheets should be loaded separately or via a combined 'wp-block-library' stylesheet. + * + * This only affects front end and not the block editor screens. + * + * @since 6.8.0 + * @see wp_should_load_separate_core_block_assets() + * + * @return bool Whether to load block assets only when they are rendered. + */ +function wp_should_load_block_assets_on_demand() { + if ( is_admin() || is_feed() || wp_is_rest_endpoint() ) { + return false; + } + + /* + * For backward compatibility, the default return value for this function is based on the return value of + * `wp_should_load_separate_core_block_assets()`. Initially, this function used to control both of these concerns. + */ + $load_assets_on_demand = wp_should_load_separate_core_block_assets(); + + /** + * Filters whether block styles should be loaded on demand. + * + * Returning false loads all block assets, regardless of whether they are rendered in a page or not. + * Returning true loads block assets only when they are rendered. + * + * The default value of the filter depends on the result of {@see wp_should_load_separate_core_block_assets()}, + * which controls whether Core block stylesheets should be loaded separately or via a combined 'wp-block-library' + * stylesheet. + * + * @since 6.8.0 + * + * @param bool $load_assets_on_demand Whether to load block assets only when they are rendered. + */ + return apply_filters( 'should_load_block_assets_on_demand', $load_assets_on_demand ); +} + +/** * Enqueues registered block scripts and styles, depending on current rendered * context (only enqueuing editor scripts while in context of the editor). * @@ -2614,13 +2685,21 @@ function wp_enqueue_registered_block_scripts_and_styles() { global $current_screen; - if ( wp_should_load_separate_core_block_assets() ) { + if ( wp_should_load_block_assets_on_demand() ) { return; } $load_editor_scripts_and_styles = is_admin() && wp_should_load_block_editor_scripts_and_styles(); $block_registry = WP_Block_Type_Registry::get_instance(); + + /* + * Block styles are only enqueued if they're registered. For core blocks, this is only the case if + * `wp_should_load_separate_core_block_assets()` returns true. Otherwise they use the single combined + * 'wp-block-library` stylesheet. See also `register_core_block_style_handles()`. + * Since `wp_enqueue_style()` does not trigger warnings if the style is not registered, it is okay to not cater for + * this behavior here and simply call `wp_enqueue_style()` unconditionally. + */ foreach ( $block_registry->get_all_registered() as $block_name => $block_type ) { // Front-end and editor styles. foreach ( $block_type->style_handles as $style_handle ) { @@ -2662,8 +2741,8 @@ foreach ( $styles as $style_properties ) { if ( isset( $style_properties['style_handle'] ) ) { - // If the site loads separate styles per-block, enqueue the stylesheet on render. - if ( wp_should_load_separate_core_block_assets() ) { + // If the site loads block styles on demand, enqueue the stylesheet on render. + if ( wp_should_load_block_assets_on_demand() ) { add_filter( 'render_block', static function ( $html, $block ) use ( $block_name, $style_properties ) { @@ -2684,8 +2763,8 @@ // Default to "wp-block-library". $handle = 'wp-block-library'; - // If the site loads separate styles per-block, check if the block has a stylesheet registered. - if ( wp_should_load_separate_core_block_assets() ) { + // If the site loads block styles on demand, check if the block has a stylesheet registered. + if ( wp_should_load_block_assets_on_demand() ) { $block_stylesheet_handle = generate_block_asset_handle( $block_name, 'style' ); if ( isset( $wp_styles->registered[ $block_stylesheet_handle ] ) ) { @@ -3052,7 +3131,7 @@ if ( str_starts_with( $url, 'http:' ) || str_starts_with( $url, 'https:' ) || - str_starts_with( $url, '//' ) || + str_starts_with( $url, '/' ) || str_starts_with( $url, '#' ) || str_starts_with( $url, 'data:' ) ) { @@ -3184,7 +3263,7 @@ /** * Enqueues a stylesheet for a specific block. * - * If the theme has opted-in to separate-styles loading, + * If the theme has opted-in to load block styles on demand, * then the stylesheet will be enqueued on-render, * otherwise when the block inits. * @@ -3252,7 +3331,7 @@ }; $hook = did_action( 'wp_enqueue_scripts' ) ? 'wp_footer' : 'wp_enqueue_scripts'; - if ( wp_should_load_separate_core_block_assets() ) { + if ( wp_should_load_block_assets_on_demand() ) { /** * Callback function to register and enqueue styles. * @@ -3298,55 +3377,19 @@ /** * Loads classic theme styles on classic themes in the frontend. * - * This is needed for backwards compatibility for button blocks specifically. + * This is used for backwards compatibility for Button and File blocks specifically. * * @since 6.1.0 + * @since 6.2.0 Added File block styles. + * @since 6.8.0 Moved stylesheet registration outside of this function. */ function wp_enqueue_classic_theme_styles() { if ( ! wp_theme_has_theme_json() ) { - $suffix = wp_scripts_get_suffix(); - wp_register_style( 'classic-theme-styles', '/' . WPINC . "/css/classic-themes$suffix.css" ); - wp_style_add_data( 'classic-theme-styles', 'path', ABSPATH . WPINC . "/css/classic-themes$suffix.css" ); wp_enqueue_style( 'classic-theme-styles' ); } } /** - * Loads classic theme styles on classic themes in the editor. - * - * This is needed for backwards compatibility for button blocks specifically. - * - * @since 6.1.0 - * - * @param array $editor_settings The array of editor settings. - * @return array A filtered array of editor settings. - */ -function wp_add_editor_classic_theme_styles( $editor_settings ) { - if ( wp_theme_has_theme_json() ) { - return $editor_settings; - } - - $suffix = wp_scripts_get_suffix(); - $classic_theme_styles = ABSPATH . WPINC . "/css/classic-themes$suffix.css"; - - /* - * This follows the pattern of get_block_editor_theme_styles, - * but we can't use get_block_editor_theme_styles directly as it - * only handles external files or theme files. - */ - $classic_theme_styles_settings = array( - 'css' => file_get_contents( $classic_theme_styles ), - '__unstableType' => 'core', - 'isGlobalStyles' => false, - ); - - // Add these settings to the start of the array so that themes can override them. - array_unshift( $editor_settings['styles'], $classic_theme_styles_settings ); - - return $editor_settings; -} - -/** * Removes leading and trailing _empty_ script tags. * * This is a helper meant to be used for literal script tag construction