Ensure that inline styles attached to conditional stylesheets are also conditional.
Adds unit test. Props georgestephanis. Fixes #29180. git-svn-id: https://develop.svn.wordpress.org/trunk@31031 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
c69dbc8b5a
commit
d699ce8b13
@ -107,17 +107,24 @@ class WP_Styles extends WP_Dependencies {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isset($obj->extra['conditional']) && $obj->extra['conditional'] ) {
|
$conditional_pre = $conditional_post = '';
|
||||||
$tag = "<!--[if {$obj->extra['conditional']}]>\n" . $tag . "<![endif]-->\n";
|
if ( isset( $obj->extra['conditional'] ) && $obj->extra['conditional'] ) {
|
||||||
|
$conditional_pre = "<!--[if {$obj->extra['conditional']}]>\n";
|
||||||
|
$conditional_post = "<![endif]-->\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $this->do_concat ) {
|
if ( $this->do_concat ) {
|
||||||
|
$this->print_html .= $conditional_pre;
|
||||||
$this->print_html .= $tag;
|
$this->print_html .= $tag;
|
||||||
if ( $inline_style = $this->print_inline_style( $handle, false ) )
|
if ( $inline_style = $this->print_inline_style( $handle, false ) ) {
|
||||||
$this->print_html .= sprintf( "<style id='%s-inline-css' type='text/css'>\n%s\n</style>\n", esc_attr( $handle ), $inline_style );
|
$this->print_html .= sprintf( "<style id='%s-inline-css' type='text/css'>\n%s\n</style>\n", esc_attr( $handle ), $inline_style );
|
||||||
|
}
|
||||||
|
$this->print_html .= $conditional_post;
|
||||||
} else {
|
} else {
|
||||||
|
echo $conditional_pre;
|
||||||
echo $tag;
|
echo $tag;
|
||||||
$this->print_inline_style( $handle );
|
$this->print_inline_style( $handle );
|
||||||
|
echo $conditional_post;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -206,4 +206,25 @@ class Tests_Dependencies_Styles extends WP_UnitTestCase {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test to make sure that inline styles attached to conditional
|
||||||
|
* stylesheets are also conditional.
|
||||||
|
*/
|
||||||
|
public function test_conditional_inline_styles_are_also_conditional() {
|
||||||
|
$expected = <<<CSS
|
||||||
|
<!--[if IE]>
|
||||||
|
<link rel='stylesheet' id='handle-css' href='http://example.com?ver=1' type='text/css' media='all' />
|
||||||
|
<style id='handle-inline-css' type='text/css'>
|
||||||
|
a { color: blue; }
|
||||||
|
</style>
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
CSS;
|
||||||
|
wp_enqueue_style( 'handle', 'http://example.com', array(), 1 );
|
||||||
|
wp_style_add_data( 'handle', 'conditional', 'IE' );
|
||||||
|
wp_add_inline_style( 'handle', 'a { color: blue; }' );
|
||||||
|
|
||||||
|
$this->assertEquals( $expected, get_echo( 'wp_print_styles' ) );
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user