PluginProbe
Gutenberg / 23.7.2
Gutenberg v23.7.2
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 7.4.0 All 402 releases
gutenberg / lib / script-loader.php

script-loader.php in Gutenberg 23.7.2, at lib/script-loader.php

156 lines 5.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Overrides the script-loader.php file.
4 *
5 * @package gutenberg
6 */
7
8 // Remove core actions to override.
9 remove_action( 'wp_enqueue_scripts', 'wp_enqueue_global_styles' );
10 remove_action( 'wp_footer', 'wp_enqueue_global_styles', 1 );
11
12 /**
13 * Enqueues the global styles defined via theme.json.
14 *
15 * Copy of the core `wp_enqueue_global_styles`. Uses helper methods bundled with the plugin.
16 *
17 * @return void
18 */
19 function gutenberg_enqueue_global_styles() {
20 $assets_on_demand = wp_should_load_block_assets_on_demand();
21 $is_block_theme = wp_is_block_theme();
22 $is_classic_theme = ! $is_block_theme;
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).
27 *
28 * @link https://core.trac.wordpress.org/ticket/53494
29 * @link https://core.trac.wordpress.org/ticket/61965
30 */
31 if (
32 doing_action( 'wp_footer' ) &&
33 (
34 $is_block_theme ||
35 ( $is_classic_theme && ! $assets_on_demand )
36 )
37 ) {
38 return;
39 }
40
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 /*
61 * If loading the CSS for each block separately, then load the theme.json CSS conditionally.
62 * This removes the CSS from the global-styles stylesheet and adds it to the inline CSS for each block.
63 * This filter must be registered before calling wp_get_global_stylesheet();
64 */
65 add_filter( 'wp_theme_json_get_style_nodes', 'wp_filter_out_block_nodes' );
66
67 $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 if ( empty( $stylesheet ) ) {
109 return;
110 }
111
112 wp_register_style( 'global-styles', false );
113 wp_add_inline_style( 'global-styles', $stylesheet );
114 wp_enqueue_style( 'global-styles' );
115
116 // Add each block as an inline css.
117 gutenberg_add_global_styles_for_blocks();
118 }
119 add_action( 'wp_enqueue_scripts', 'gutenberg_enqueue_global_styles' );
120 add_action( 'wp_footer', 'gutenberg_enqueue_global_styles', 1 );
121
122 /**
123 * Enqueues the global styles custom css.
124 *
125 * @since 6.2.0
126 */
127 function gutenberg_enqueue_global_styles_custom_css() {
128 _deprecated_function( __FUNCTION__, 'Gutenberg 17.8.0', 'gutenberg_enqueue_global_styles' );
129 if ( ! wp_is_block_theme() ) {
130 return;
131 }
132
133 // Don't enqueue Customizer's custom CSS separately.
134 remove_action( 'wp_head', 'wp_custom_css_cb', 101 );
135
136 $custom_css = wp_get_custom_css();
137 $custom_css .= gutenberg_get_global_styles_custom_css();
138
139 if ( ! empty( $custom_css ) ) {
140 wp_add_inline_style( 'global-styles', $custom_css );
141 }
142 }
143
144 /**
145 * Function that enqueues the CSS Custom Properties coming from theme.json.
146 *
147 * @since 5.9.0
148 */
149 function gutenberg_enqueue_global_styles_css_custom_properties() {
150 wp_register_style( 'global-styles-css-custom-properties', false );
151 wp_add_inline_style( 'global-styles-css-custom-properties', gutenberg_get_global_stylesheet( array( 'variables' ) ) );
152 wp_enqueue_style( 'global-styles-css-custom-properties' );
153 }
154 remove_action( 'enqueue_block_editor_assets', 'wp_enqueue_global_styles_css_custom_properties' );
155 add_action( 'enqueue_block_editor_assets', 'gutenberg_enqueue_global_styles_css_custom_properties' );
156