diff --git a/src/wp-includes/class.wp-dependencies.php b/src/wp-includes/class.wp-dependencies.php
index c051770b12..a0d68c97a3 100644
--- a/src/wp-includes/class.wp-dependencies.php
+++ b/src/wp-includes/class.wp-dependencies.php
@@ -98,21 +98,6 @@ class WP_Dependencies {
foreach ( $this->to_do as $key => $handle ) {
if ( !in_array($handle, $this->done, true) && isset($this->registered[$handle]) ) {
-
- /*
- * A single item may alias a set of items, by having dependencies,
- * but no source. Queuing the item queues the dependencies.
- *
- * Example: The extending class WP_Scripts is used to register 'scriptaculous' as a set of registered handles:
- * add( 'scriptaculous', false, array( 'scriptaculous-dragdrop', 'scriptaculous-slider', 'scriptaculous-controls' ) );
- *
- * The src property is false.
- */
- if ( ! $this->registered[$handle]->src ) {
- $this->done[] = $handle;
- continue;
- }
-
/*
* Attempt to process the item. If successful,
* add the handle to the done array.
diff --git a/src/wp-includes/class.wp-scripts.php b/src/wp-includes/class.wp-scripts.php
index 298eda7b5b..5d8fb17ae3 100644
--- a/src/wp-includes/class.wp-scripts.php
+++ b/src/wp-includes/class.wp-scripts.php
@@ -177,6 +177,11 @@ class WP_Scripts extends WP_Dependencies {
echo $cond_after;
}
+ // A single item may alias a set of items, by having dependencies, but no source.
+ if ( ! $obj->src ) {
+ return true;
+ }
+
if ( ! preg_match( '|^(https?:)?//|', $src ) && ! ( $this->content_url && 0 === strpos( $src, $this->content_url ) ) ) {
$src = $this->base_url . $src;
}
diff --git a/src/wp-includes/class.wp-styles.php b/src/wp-includes/class.wp-styles.php
index e462f8c111..463b9a3645 100644
--- a/src/wp-includes/class.wp-styles.php
+++ b/src/wp-includes/class.wp-styles.php
@@ -72,11 +72,20 @@ class WP_Styles extends WP_Dependencies {
else
$media = 'all';
- $href = $this->_css_href( $obj->src, $ver, $handle );
- if ( empty( $href ) ) {
- // Turns out there is nothing to print.
+ // A single item may alias a set of items, by having dependencies, but no source.
+ if ( ! $obj->src ) {
+ if ( $inline_style = $this->print_inline_style( $handle, false ) ) {
+ $inline_style = sprintf( "\n", esc_attr( $handle ), $inline_style );
+ if ( $this->do_concat ) {
+ $this->print_html .= $inline_style;
+ } else {
+ echo $inline_style;
+ }
+ }
return true;
}
+
+ $href = $this->_css_href( $obj->src, $ver, $handle );
$rel = isset($obj->extra['alt']) && $obj->extra['alt'] ? 'alternate stylesheet' : 'stylesheet';
$title = isset($obj->extra['title']) ? "title='" . esc_attr( $obj->extra['title'] ) . "'" : '';
diff --git a/tests/phpunit/tests/dependencies/scripts.php b/tests/phpunit/tests/dependencies/scripts.php
index 950e53e2fd..0624b594b2 100644
--- a/tests/phpunit/tests/dependencies/scripts.php
+++ b/tests/phpunit/tests/dependencies/scripts.php
@@ -166,4 +166,20 @@ class Tests_Dependencies_Scripts extends WP_UnitTestCase {
$this->assertFalse( wp_register_script( 'duplicate-handler', 'http://example.com' ) );
}
+ /**
+ * @ticket 35229
+ */
+ function test_wp_register_script_with_handle_without_source() {
+ $expected = "\n";
+ $expected .= "\n";
+
+ wp_register_script( 'handle-one', 'http://example.com', array(), 1 );
+ wp_register_script( 'handle-two', 'http://example.com', array(), 2 );
+ wp_register_script( 'handle-three', false, array( 'handle-one', 'handle-two' ) );
+
+ wp_enqueue_script( 'handle-three' );
+
+ $this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
+ }
+
}
diff --git a/tests/phpunit/tests/dependencies/styles.php b/tests/phpunit/tests/dependencies/styles.php
index 2b5af5bb9f..a2d74f5eec 100644
--- a/tests/phpunit/tests/dependencies/styles.php
+++ b/tests/phpunit/tests/dependencies/styles.php
@@ -234,9 +234,31 @@ CSS;
*
* @ticket 31126
*/
- function test_wp_register_style(){
+ function test_wp_register_style() {
$this->assertTrue( wp_register_style( 'duplicate-handler', 'http://example.com' ) );
$this->assertFalse( wp_register_style( 'duplicate-handler', 'http://example.com' ) );
}
+ /**
+ * @ticket 35229
+ */
+ function test_wp_add_inline_style_for_handle_without_source() {
+ $style = "a { color: blue; }";
+
+ $expected = "\n";
+ $expected .= "\n";
+ $expected .= "\n";
+
+ wp_register_style( 'handle-one', 'http://example.com', array(), 1 );
+ wp_register_style( 'handle-two', 'http://example.com', array(), 1 );
+ wp_register_style( 'handle-three', false, array( 'handle-one', 'handle-two' ) );
+
+ wp_enqueue_style( 'handle-three' );
+ wp_add_inline_style( 'handle-three', $style );
+
+ $this->assertEquals( $expected, get_echo( 'wp_print_styles' ) );
+ }
+
}