Make WordPress Core


Ignore:
Timestamp:
07/30/2025 04:22:38 AM (3 months ago)
Author:
westonruter
Message:

Customize: Enable Customizer live previews of Custom CSS in Block Themes.

In a Block Theme, the Custom CSS from the Customizer is inserted into the global styles, before the global style's Custom CSS. In order to update the Customizer's Custom CSS inside of the global styles, milestone CSS comments are added in the preview so that the live preview logic can do the replacement.

Follow-up to [55192], [58703].
See #57536, #61395.

Props westonruter, wildworks, peterwilsoncc, rollybueno, SirLouen, poojapadamad, rafiq91, audrasjb.
Fixes #63589.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/script-loader.php

    r60416 r60522  
    25422542         */
    25432543        remove_action( 'wp_head', 'wp_custom_css_cb', 101 );
    2544         // Get the custom CSS from the Customizer and add it to the global stylesheet.
    2545         $custom_css  = wp_get_custom_css();
     2544
     2545        /*
     2546         * Get the custom CSS from the Customizer and add it to the global stylesheet.
     2547         * Always do this in Customizer preview for the sake of live preview since it be empty.
     2548         */
     2549        $custom_css = trim( wp_get_custom_css() );
     2550        if ( $custom_css || is_customize_preview() ) {
     2551            if ( is_customize_preview() ) {
     2552                /*
     2553                 * When in the Customizer preview, wrap the Custom CSS in milestone comments to allow customize-preview.js
     2554                 * to locate the CSS to replace for live previewing. Make sure that the milestone comments are omitted from
     2555                 * the stored Custom CSS if by chance someone tried to add them, which would be highly unlikely, but it
     2556                 * would break live previewing.
     2557                 */
     2558                $before_milestone = '/*BEGIN_CUSTOMIZER_CUSTOM_CSS*/';
     2559                $after_milestone  = '/*END_CUSTOMIZER_CUSTOM_CSS*/';
     2560                $custom_css       = str_replace( array( $before_milestone, $after_milestone ), '', $custom_css );
     2561                $custom_css       = $before_milestone . "\n" . $custom_css . "\n" . $after_milestone;
     2562            }
     2563            $custom_css = "\n" . $custom_css;
     2564        }
    25462565        $stylesheet .= $custom_css;
    25472566
Note: See TracChangeset for help on using the changeset viewer.