diff --git a/src/wp-includes/class.wp-scripts.php b/src/wp-includes/class.wp-scripts.php
index cf26b05f16..781de8c109 100644
--- a/src/wp-includes/class.wp-scripts.php
+++ b/src/wp-includes/class.wp-scripts.php
@@ -271,6 +271,12 @@ class WP_Scripts extends WP_Dependencies {
$after_handle = sprintf( "\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;
}
diff --git a/tests/phpunit/tests/dependencies/scripts.php b/tests/phpunit/tests/dependencies/scripts.php
index 20ade29c0e..dba0908248 100644
--- a/tests/phpunit/tests/dependencies/scripts.php
+++ b/tests/phpunit/tests/dependencies/scripts.php
@@ -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 = "\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 = "\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 = "\n";
+ $expected .= "\n";
+
+ $this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
+ }
+
/**
* @ticket 14853
*/