<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[59980] trunk/src/wp-includes: Themes: Enqueue `classic-theme-styles` in `enqueue_block_assets`.</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="https://core.trac.wordpress.org/changeset/59980">59980</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"https://core.trac.wordpress.org/changeset/59980","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>audrasjb</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2025-03-13 22:58:25 +0000 (Thu, 13 Mar 2025)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Themes: Enqueue `classic-theme-styles` in `enqueue_block_assets`.

<a href="https://core.trac.wordpress.org/changeset/54687">[54687]</a> introduced a fallback stylesheet for Button block styles (and later File blocks) for both the front end and the editor. In the editor, that has been added within the body, after the theme's block styles. That commit had quick fixes for Twenty Twelve and Twenty Twenty, but raising the specificity for those colors should have been unnecessary. Also, themes such as Twenty Fourteen - and non-bundled themes - still have had a similar problem with the incorrect order.

Thus, this changeset:
- Registers the stylesheet outside `wp_enqueue_classic_theme_styles()`.
- Enqueues classic styles in the `enqueue_block_assets` action instead of adding them in the `block_editor_settings_all` filter.
- Deprecates the `wp_add_editor_classic_theme_styles()` function.

Follow-up to <a href="https://core.trac.wordpress.org/changeset/54687">[54687]</a>.

Props sabernhardt, mukesh27.
Fixes <a href="https://core.trac.wordpress.org/ticket/61892">#61892</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcwpincludesdefaultfiltersphp">trunk/src/wp-includes/default-filters.php</a></li>
<li><a href="#trunksrcwpincludesdeprecatedphp">trunk/src/wp-includes/deprecated.php</a></li>
<li><a href="#trunksrcwpincludesscriptloaderphp">trunk/src/wp-includes/script-loader.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcwpincludesdefaultfiltersphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/default-filters.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/default-filters.php 2025-03-13 18:21:37 UTC (rev 59979)
+++ trunk/src/wp-includes/default-filters.php   2025-03-13 22:58:25 UTC (rev 59980)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -588,6 +588,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> add_action( 'wp_enqueue_scripts', 'wp_enqueue_classic_theme_styles' );
</span><span class="cx" style="display: block; padding: 0 10px"> add_action( 'admin_enqueue_scripts', 'wp_localize_jquery_ui_datepicker', 1000 );
</span><span class="cx" style="display: block; padding: 0 10px"> add_action( 'admin_enqueue_scripts', 'wp_common_block_scripts_and_styles' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+add_action( 'enqueue_block_assets', 'wp_enqueue_classic_theme_styles' );
</ins><span class="cx" style="display: block; padding: 0 10px"> add_action( 'enqueue_block_assets', 'wp_enqueue_registered_block_scripts_and_styles' );
</span><span class="cx" style="display: block; padding: 0 10px"> add_action( 'enqueue_block_assets', 'enqueue_block_styles_assets', 30 );
</span><span class="cx" style="display: block; padding: 0 10px"> /*
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -612,7 +613,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> add_filter( 'print_scripts_array', 'wp_prototype_before_jquery' );
</span><span class="cx" style="display: block; padding: 0 10px"> add_action( 'customize_controls_print_styles', 'wp_resource_hints', 1 );
</span><span class="cx" style="display: block; padding: 0 10px"> add_action( 'admin_head', 'wp_check_widget_editor_deps' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-add_filter( 'block_editor_settings_all', 'wp_add_editor_classic_theme_styles' );
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> // Global styles can be enqueued in both the header and the footer. See https://core.trac.wordpress.org/ticket/53494.
</span><span class="cx" style="display: block; padding: 0 10px"> add_action( 'wp_enqueue_scripts', 'wp_enqueue_global_styles' );
</span></span></pre></div>
<a id="trunksrcwpincludesdeprecatedphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/deprecated.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/deprecated.php      2025-03-13 18:21:37 UTC (rev 59979)
+++ trunk/src/wp-includes/deprecated.php        2025-03-13 22:58:25 UTC (rev 59980)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6422,3 +6422,42 @@
</span><span class="cx" style="display: block; padding: 0 10px"> function current_user_can_for_blog( $blog_id, $capability, ...$args ) {
</span><span class="cx" style="display: block; padding: 0 10px">        return current_user_can_for_site( $blog_id, $capability, ...$args );
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+/**
+ * Loads classic theme styles on classic themes in the editor.
+ *
+ * This is used for backwards compatibility for Button and File blocks specifically.
+ *
+ * @since 6.1.0
+ * @since 6.2.0 Added File block styles.
+ * @deprecated 6.8.0 Styles are enqueued, not printed in the body element.
+ *
+ * @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 ) {
+       _deprecated_function( __FUNCTION__, '6.8.0', 'wp_enqueue_classic_theme_styles' );
+
+       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;
+}
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="trunksrcwpincludesscriptloaderphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/script-loader.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/script-loader.php   2025-03-13 18:21:37 UTC (rev 59979)
+++ trunk/src/wp-includes/script-loader.php     2025-03-13 22:58:25 UTC (rev 59980)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1662,6 +1662,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">        $styles->add( 'wp-block-library-theme', "/$block_library_theme_path" );
</span><span class="cx" style="display: block; padding: 0 10px">        $styles->add_data( 'wp-block-library-theme', 'path', ABSPATH . $block_library_theme_path );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        $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 );
+
</ins><span class="cx" style="display: block; padding: 0 10px">         $styles->add(
</span><span class="cx" style="display: block; padding: 0 10px">                'wp-reset-editor-styles',
</span><span class="cx" style="display: block; padding: 0 10px">                "/wp-includes/css/dist/block-library/reset$suffix.css",
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3351,55 +3355,19 @@
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="cx" style="display: block; padding: 0 10px">  * Loads classic theme styles on classic themes in the frontend.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * This is needed for backwards compatibility for button blocks specifically.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * This is used for backwards compatibility for Button and File blocks specifically.
</ins><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @since 6.1.0
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @since 6.2.0 Added File block styles.
+ * @since 6.8.0 Moved stylesheet registration outside of this function.
</ins><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> function wp_enqueue_classic_theme_styles() {
</span><span class="cx" style="display: block; padding: 0 10px">        if ( ! wp_theme_has_theme_json() ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $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" );
</del><span class="cx" style="display: block; padding: 0 10px">                 wp_enqueue_style( 'classic-theme-styles' );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * 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;
-}
-
-/**
</del><span class="cx" style="display: block; padding: 0 10px">  * Removes leading and trailing _empty_ script tags.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * This is a helper meant to be used for literal script tag construction
</span></span></pre>
</div>
</div>

</body>
</html>