diff --git a/src/wp-includes/theme.php b/src/wp-includes/theme.php index 9effbadcd5..feec9b3de4 100644 --- a/src/wp-includes/theme.php +++ b/src/wp-includes/theme.php @@ -2607,16 +2607,19 @@ function add_theme_support( $feature, ...$args ) { case 'html5': // You can't just pass 'html5', you need to pass an array of types. - if ( empty( $args[0] ) ) { - // Build an array of types for back-compat. - $args = array( 0 => array( 'comment-list', 'comment-form', 'search-form' ) ); - } elseif ( ! isset( $args[0] ) || ! is_array( $args[0] ) ) { + if ( empty( $args[0] ) || ! is_array( $args[0] ) ) { _doing_it_wrong( "add_theme_support( 'html5' )", __( 'You need to pass an array of types.' ), '3.6.1' ); - return false; + + if ( ! empty( $args[0] ) && ! is_array( $args[0] ) ) { + return false; + } + + // Build an array of types for back-compat. + $args = array( 0 => array( 'comment-list', 'comment-form', 'search-form' ) ); } // Calling 'html5' again merges, rather than overwrites. diff --git a/tests/phpunit/tests/theme/support.php b/tests/phpunit/tests/theme/support.php index a6bdf5efac..aed9d94d3c 100644 --- a/tests/phpunit/tests/theme/support.php +++ b/tests/phpunit/tests/theme/support.php @@ -76,11 +76,18 @@ class Tests_Theme_Support extends WP_UnitTestCase { /** * @ticket 24932 + * + * @expectedIncorrectUsage add_theme_support( 'html5' ) */ public function test_supports_html5() { remove_theme_support( 'html5' ); $this->assertFalse( current_theme_supports( 'html5' ) ); $this->assertFalse( current_theme_supports( 'html5', 'comment-form' ) ); + + /* + * If the second parameter is not specified, it should throw a _doing_it_wrong() notice + * and fall back to `array( 'comment-list', 'comment-form', 'search-form' )` for back-compat. + */ $this->assertNotFalse( add_theme_support( 'html5' ) ); $this->assertTrue( current_theme_supports( 'html5' ) ); $this->assertTrue( current_theme_supports( 'html5', 'comment-form' ) ); @@ -98,6 +105,8 @@ class Tests_Theme_Support extends WP_UnitTestCase { remove_theme_support( 'html5' ); $this->assertFalse( current_theme_supports( 'html5' ) ); $this->assertFalse( current_theme_supports( 'html5', 'comment-form' ) ); + + // The second parameter should be an array. $this->assertFalse( add_theme_support( 'html5', 'comment-form' ) ); $this->assertNotFalse( add_theme_support( 'html5', array( 'comment-form' ) ) ); $this->assertTrue( current_theme_supports( 'html5', 'comment-form' ) );