WordPress.org

Make WordPress Core

Ticket #29180: conditionalize-inline-css-also.diff

File conditionalize-inline-css-also.diff, 2.6 KB (added by georgestephanis, 7 years ago)
  • src/wp-includes/class.wp-styles.php

     
    103103                        }
    104104                }
    105105
    106                 if ( isset($obj->extra['conditional']) && $obj->extra['conditional'] ) {
    107                         $tag = "<!--[if {$obj->extra['conditional']}]>\n" . $tag . "<![endif]-->\n";
     106                $conditional_pre = $conditional_post = '';
     107                if ( isset( $obj->extra['conditional'] ) && $obj->extra['conditional'] ) {
     108                        $conditional_pre  = "<!--[if {$obj->extra['conditional']}]>\n";
     109                        $conditional_post = "<![endif]-->\n";
    108110                }
    109111
    110112                if ( $this->do_concat ) {
     113                        $this->print_html .= $conditional_pre;
    111114                        $this->print_html .= $tag;
    112                         if ( $inline_style = $this->print_inline_style( $handle, false ) )
     115                        if ( $inline_style = $this->print_inline_style( $handle, false ) ) {
    113116                                $this->print_html .= sprintf( "<style type='text/css'>\n%s\n</style>\n", $inline_style );
     117                        }
     118                        $this->print_html .= $conditional_post;
    114119                } else {
     120                        echo $conditional_pre;
    115121                        echo $tag;
    116122                        $this->print_inline_style( $handle );
     123                        echo $conditional_post;
    117124                }
    118125
    119126                return true;
  • tests/phpunit/tests/dependencies/styles.php

     
    9696                $style  = ".thing {\n";
    9797                $style .= "\tbackground: red;\n";
    9898                $style .= "}";
    99                
     99
    100100                $expected  = "<link rel='stylesheet' id='handle-css'  href='http://example.com?ver=1' type='text/css' media='all' />\n";
    101101                $expected .= "<style type='text/css'>\n";
    102102                $expected .= "$style\n";
     
    147147                $style1  = ".thing1 {\n";
    148148                $style1 .= "\tbackground: red;\n";
    149149                $style1 .= "}";
    150                
     150
    151151                $style2  = ".thing2 {\n";
    152152                $style2 .= "\tbackground: blue;\n";
    153153                $style2 .= "}";
     
    206206
    207207        }
    208208
     209        /**
     210         * Test to make sure that inline styles attached to conditional
     211         * stylesheets are also conditional.
     212         */
     213        public function test_conditional_inline_styles_are_also_conditional() {
     214
     215                $expected = <<<CSS
     216<!--[if IE]>
     217<link rel='stylesheet' id='handle-css'  href='http://example.com?ver=1' type='text/css' media='all' />
     218<style type='text/css'>
     219a { color: blue; }
     220</style>
     221<![endif]-->
     222
     223CSS;
     224
     225                wp_enqueue_style( 'handle', 'http://example.com', array(), 1 );
     226                wp_style_add_data( 'handle', 'conditional', 'IE' );
     227                wp_add_inline_style( 'handle', 'a { color: blue; }' );
     228
     229                $this->assertEquals( $expected, get_echo( 'wp_print_styles' ) );
     230
     231        }
     232
    209233}