Script/Style Dependencies: Make sure that inline scripts for handles without a source are printed.

See [36550] for `WP_Styles`.

Props bpayton.
Fixes #44551.

git-svn-id: https://develop.svn.wordpress.org/trunk@43565 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Sergey Biryukov 2018-08-11 17:41:29 +00:00
parent cbf8f438d7
commit 244f435e22
2 changed files with 56 additions and 1 deletions

View File

@ -271,6 +271,12 @@ class WP_Scripts extends WP_Dependencies {
$after_handle = sprintf( "<script type='text/javascript'>\n%s\n</script>\n", $after_handle );
}
if ( $before_handle || $after_handle ) {
$inline_script_tag = "{$cond_before}{$before_handle}{$after_handle}{$cond_after}";
} else {
$inline_script_tag = '';
}
if ( $this->do_concat ) {
/**
* Filters the script loader source.
@ -312,7 +318,15 @@ class WP_Scripts extends WP_Dependencies {
}
// A single item may alias a set of items, by having dependencies, but no source.
if ( ! $obj->src ) {
if ( ! $src ) {
if ( $inline_script_tag ) {
if ( $this->do_concat ) {
$this->print_html .= $inline_script_tag;
} else {
echo $inline_script_tag;
}
}
return true;
}

View File

@ -405,6 +405,47 @@ class Tests_Dependencies_Scripts extends WP_UnitTestCase {
$this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
}
/**
* @ticket 44551
*/
function test_wp_add_inline_script_before_for_handle_without_source() {
wp_register_script( 'test-example', '' );
wp_enqueue_script( 'test-example' );
wp_add_inline_script( 'test-example', 'console.log("before");', 'before' );
$expected = "<script type='text/javascript'>\nconsole.log(\"before\");\n</script>\n";
$this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
}
/**
* @ticket 44551
*/
function test_wp_add_inline_script_after_for_handle_without_source() {
wp_register_script( 'test-example', '' );
wp_enqueue_script( 'test-example' );
wp_add_inline_script( 'test-example', 'console.log("after");' );
$expected = "<script type='text/javascript'>\nconsole.log(\"after\");\n</script>\n";
$this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
}
/**
* @ticket 44551
*/
function test_wp_add_inline_script_before_and_after_for_handle_without_source() {
wp_register_script( 'test-example', '' );
wp_enqueue_script( 'test-example' );
wp_add_inline_script( 'test-example', 'console.log("before");', 'before' );
wp_add_inline_script( 'test-example', 'console.log("after");' );
$expected = "<script type='text/javascript'>\nconsole.log(\"before\");\n</script>\n";
$expected .= "<script type='text/javascript'>\nconsole.log(\"after\");\n</script>\n";
$this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
}
/**
* @ticket 14853
*/