WordPress.org

Make WordPress Core

Ticket #21627: 21627.2.diff

File 21627.2.diff, 4.3 KB (added by peterwilsoncc, 3 years ago)
  • src/wp-includes/class-wp-customize-manager.php

    diff --git src/wp-includes/class-wp-customize-manager.php src/wp-includes/class-wp-customize-manager.php
    index bb892b5..81cde99 100644
    final class WP_Customize_Manager { 
    18291829                        'theme'    => array(
    18301830                                'stylesheet' => $this->get_stylesheet(),
    18311831                                'active'     => $this->is_theme_active(),
     1832                                'bgElement'  => tag_escape( get_theme_support( 'custom-background', 'background-element' ) ),
     1833                                'bgClass'    => sanitize_html_class( get_theme_support( 'custom-background', 'background-class' ) ),
     1834                                'bgSelector' => get_theme_support( 'custom-background', 'background-selector' ),
    18321835                        ),
    18331836                        'url'      => array(
    18341837                                'preview'       => esc_url_raw( $this->get_preview_url() ),
    final class WP_Customize_Manager { 
    18521855                        'previewableDevices' => $this->get_previewable_devices(),
    18531856                );
    18541857
     1858                $settings['theme']['bgSelector'] = sprintf( $settings['theme']['bgSelector'], $settings['theme']['bgElement'], $settings['theme']['bgClass'] );
     1859
    18551860                // Prepare Customize Section objects to pass to JavaScript.
    18561861                foreach ( $this->sections() as $id => $section ) {
    18571862                        if ( $section->check_capabilities() ) {
  • src/wp-includes/js/customize-preview.js

    diff --git src/wp-includes/js/customize-preview.js src/wp-includes/js/customize-preview.js
    index 1d61ba3..4e8143a 100644
     
    212212                });
    213213
    214214                api.when.apply( api, bg ).done( function( color, image, position_x, repeat, attachment ) {
    215                         var body = $(document.body),
     215                        var element = $(window.parent._wpCustomizeSettings.theme.bgElement),
    216216                                head = $('head'),
    217217                                style = $('#custom-background-css'),
    218218                                update;
    219219
    220220                        update = function() {
    221221                                var css = '';
     222                                var selector = window.parent._wpCustomizeSettings.theme.bgSelector;
    222223
    223224                                // The body will support custom backgrounds if either
    224225                                // the color or image are set.
    225226                                //
    226227                                // See get_body_class() in /wp-includes/post-template.php
    227                                 body.toggleClass( 'custom-background', !! ( color() || image() ) );
     228                                element.toggleClass( 'custom-background', !! ( color() || image() ) );
    228229
    229230                                if ( color() )
    230231                                        css += 'background-color: ' + color() + ';';
     
    238239
    239240                                // Refresh the stylesheet by removing and recreating it.
    240241                                style.remove();
    241                                 style = $('<style type="text/css" id="custom-background-css">body.custom-background { ' + css + ' }</style>').appendTo( head );
     242                                style = $('<style type="text/css" id="custom-background-css">' + selector + ' { ' + css + ' }</style>').appendTo( head );
    242243                        };
    243244
    244245                        $.each( arguments, function() {
  • src/wp-includes/post-template.php

    diff --git src/wp-includes/post-template.php src/wp-includes/post-template.php
    index 1214129..fd592a1 100644
    function get_body_class( $class = '' ) { 
    712712        }
    713713
    714714        if ( get_background_color() !== get_theme_support( 'custom-background', 'default-color' ) || get_background_image() )
    715                 $classes[] = 'custom-background';
     715                $classes[] = sanitize_html_class( get_theme_support( 'custom-background', 'background-class' ) );
    716716
    717717        if ( has_custom_logo() ) {
    718718                $classes[] = 'wp-custom-logo';
  • src/wp-includes/theme.php

    diff --git src/wp-includes/theme.php src/wp-includes/theme.php
    index c8cf03f..27bac56 100644
    function _custom_background_cb() { 
    13931393
    13941394                $style .= $image . $repeat . $position . $attachment;
    13951395        }
     1396
     1397        $element    = tag_escape( get_theme_support( 'custom-background', 'background-element' ) );
     1398        $class      = sanitize_html_class( get_theme_support( 'custom-background', 'background-class' ) );
     1399        $selector   = get_theme_support( 'custom-background', 'background-selector' );
     1400
     1401        $selector = sprintf( $selector, $element, $class );
    13961402?>
    13971403<style type="text/css" id="custom-background-css">
    1398 body.custom-background { <?php echo trim( $style ); ?> }
     1404<?php echo $selector; ?> { <?php echo trim( $style ); ?> }
    13991405</style>
    14001406<?php
    14011407}
    function add_theme_support( $feature ) { 
    16961702                                'wp-head-callback'       => '_custom_background_cb',
    16971703                                'admin-head-callback'    => '',
    16981704                                'admin-preview-callback' => '',
     1705                                'background-element'     => 'body',
     1706                                'background-class'       => 'custom-background',
     1707                                'background-selector'    => '%1$s.%2$s',
    16991708                        );
    17001709
    17011710                        $jit = isset( $args[0]['__jit'] );