PluginProbe
Gutenberg / 16.2.0
Gutenberg v16.2.0
24.0.0 23.9.1 23.9.0 23.8.0 23.7.2 23.7.1 23.7.0 23.6.1 23.6.2 23.6.0 23.5.3 23.5.2 23.5.1 23.5.0 23.4.0 23.3.2 23.3.1 23.3.0 23.2.0 23.2.1 23.2.2 23.1.1 23.1.0 23.0.1 12.6.0 All 403 releases
← All changes | lib/script-loader.php +10 -71 23.5.216.2.0 View file →
@@ -16,48 +16,26 @@
16 16 *
17 17 * @return void
18 18 */
19 19 function gutenberg_enqueue_global_styles() {
20 - $assets_on_demand = wp_should_load_block_assets_on_demand();
20 + $separate_assets = wp_should_load_separate_core_block_assets();
21 21 $is_block_theme = wp_is_block_theme();
22 22 $is_classic_theme = ! $is_block_theme;
23 23
24 - /**
25 - * Global styles should be printed in the HEAD for block themes, or for classic themes when loading assets on
26 - * demand is disabled (which is no longer the default since WordPress 6.9).
24 + /*
25 + * Global styles should be printed in the head when loading all styles combined.
26 + * The footer should only be used to print global styles for classic themes with separate core assets enabled.
27 27 *
28 - * @link https://core.trac.wordpress.org/ticket/53494
29 - * @link https://core.trac.wordpress.org/ticket/61965
28 + * See https://core.trac.wordpress.org/ticket/53494.
30 29 */
31 30 if (
32 - doing_action( 'wp_footer' ) &&
33 - (
34 - $is_block_theme ||
35 - ( $is_classic_theme && ! $assets_on_demand )
36 - )
31 + ( $is_block_theme && doing_action( 'wp_footer' ) ) ||
32 + ( $is_classic_theme && doing_action( 'wp_footer' ) && ! $separate_assets ) ||
33 + ( $is_classic_theme && doing_action( 'wp_enqueue_scripts' ) && $separate_assets )
37 34 ) {
38 35 return;
39 36 }
40 37
41 - /**
42 - * The footer should only be used for classic themes when loading assets on demand is enabled. In WP 6.9 this is the
43 - * default with the introduction of hoisting late-printed styles (via {@see wp_load_classic_theme_block_styles_on_demand()}).
44 - * So even though the main global styles are not printed here in the HEAD for classic themes with on-demand asset
45 - * loading, a placeholder for the global styles is still enqueued. Then when {@see wp_hoist_late_printed_styles()}
46 - * processes the output buffer, it can locate the placeholder and inject the global styles from the footer into the
47 - * HEAD, replacing the placeholder.
48 - *
49 - * @link https://core.trac.wordpress.org/ticket/64099
50 - */
51 - if ( $is_classic_theme && doing_action( 'wp_enqueue_scripts' ) && $assets_on_demand ) {
52 - if ( has_action( 'wp_template_enhancement_output_buffer_started', 'wp_hoist_late_printed_styles' ) ) {
53 - wp_register_style( 'wp-global-styles-placeholder', false );
54 - wp_add_inline_style( 'wp-global-styles-placeholder', ':root { --wp-internal-comment: "Placeholder for wp_hoist_late_printed_styles() to replace with the global-styles printed at wp_footer." }' );
55 - wp_enqueue_style( 'wp-global-styles-placeholder' );
56 - }
57 - return;
58 - }
59 -
60 38 /*
61 39 * If loading the CSS for each block separately, then load the theme.json CSS conditionally.
62 40 * This removes the CSS from the global-styles stylesheet and adds it to the inline CSS for each block.
63 41 * This filter must be registered before calling wp_get_global_stylesheet();
@@ -64,48 +42,8 @@
64 42 */
65 43 add_filter( 'wp_theme_json_get_style_nodes', 'wp_filter_out_block_nodes' );
66 44
67 45 $stylesheet = gutenberg_get_global_stylesheet();
68 -
69 - /*
70 - * For block themes, merge Customizer's custom CSS into the global styles stylesheet
71 - * before the global styles custom CSS, ensuring proper cascade order.
72 - * For classic themes, let the Customizer CSS print separately via wp_custom_css_cb()
73 - * at priority 101 in wp_head, preserving its position at the end of the <head>.
74 - */
75 - if ( $is_block_theme ) {
76 - /*
77 - * Dequeue the Customizer's custom CSS
78 - * and add it before the global styles custom CSS.
79 - */
80 - remove_action( 'wp_head', 'wp_custom_css_cb', 101 );
81 -
82 - /*
83 - * Get the custom CSS from the Customizer and add it to the global stylesheet.
84 - * Always do this in Customizer preview for the sake of live preview since it be empty.
85 - */
86 - $custom_css = trim( wp_get_custom_css() );
87 - if ( $custom_css || is_customize_preview() ) {
88 - if ( is_customize_preview() ) {
89 - /*
90 - * When in the Customizer preview, wrap the Custom CSS in milestone comments to allow customize-preview.js
91 - * to locate the CSS to replace for live previewing. Make sure that the milestone comments are omitted from
92 - * the stored Custom CSS if by chance someone tried to add them, which would be highly unlikely, but it
93 - * would break live previewing.
94 - */
95 - $before_milestone = '/*BEGIN_CUSTOMIZER_CUSTOM_CSS*/';
96 - $after_milestone = '/*END_CUSTOMIZER_CUSTOM_CSS*/';
97 - $custom_css = str_replace( array( $before_milestone, $after_milestone ), '', $custom_css );
98 - $custom_css = $before_milestone . "\n" . $custom_css . "\n" . $after_milestone;
99 - }
100 - $custom_css = "\n" . $custom_css;
101 - }
102 - $stylesheet .= $custom_css;
103 -
104 - // Add the global styles custom CSS at the end.
105 - $stylesheet .= gutenberg_get_global_stylesheet( array( 'custom-css' ) );
106 - }
107 -
108 46 if ( empty( $stylesheet ) ) {
109 47 return;
110 48 }
111 49
@@ -124,9 +62,8 @@
124 62 *
125 63 * @since 6.2.0
126 64 */
127 65 function gutenberg_enqueue_global_styles_custom_css() {
128 - _deprecated_function( __FUNCTION__, 'Gutenberg 17.8.0', 'gutenberg_enqueue_global_styles' );
129 66 if ( ! wp_is_block_theme() ) {
130 67 return;
131 68 }
132 69
@@ -139,8 +76,10 @@
139 76 if ( ! empty( $custom_css ) ) {
140 77 wp_add_inline_style( 'global-styles', $custom_css );
141 78 }
142 79 }
80 +remove_action( 'wp_enqueue_scripts', 'wp_enqueue_global_styles_custom_css' );
81 +add_action( 'wp_enqueue_scripts', 'gutenberg_enqueue_global_styles_custom_css' );
143 82
144 83 /**
145 84 * Function that enqueues the CSS Custom Properties coming from theme.json.
146 85 *