From 357c1c0b861242795f261e7ed84273608e867348 Mon Sep 17 00:00:00 2001 From: Helen Hou-Sandi Date: Tue, 27 Oct 2020 19:58:10 +0000 Subject: [PATCH] Post Formats: You have to pass an array of supported post formats. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This shows a `_doing_it_wrong()` message and also returns false instead of true if no array of formats is passed in `add_theme_support()`, avoiding a PHP error. Post formats maintainership comes full circle. 🙃 Props Mista-Flo, sproutchris, garrett-eclipse. Fixes #51390. git-svn-id: https://develop.svn.wordpress.org/trunk@49344 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/theme.php | 4 ++++ tests/phpunit/tests/post/formats.php | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/wp-includes/theme.php b/src/wp-includes/theme.php index 8e8a5779d4..237a4d3e14 100644 --- a/src/wp-includes/theme.php +++ b/src/wp-includes/theme.php @@ -2481,6 +2481,7 @@ function get_theme_starter_content() { * by adding it to the function signature. * @since 5.5.0 The `core-block-patterns` feature was added and is enabled by default. * @since 5.5.0 The `custom-logo` feature now also accepts 'unlink-homepage-logo'. + * @since 5.6.0 The `post-formats` feature now returns doing it wrong if no array is passed * * @global array $_wp_theme_features * @@ -2523,6 +2524,9 @@ function add_theme_support( $feature, ...$args ) { unset( $post_formats['standard'] ); $args[0] = array_intersect( $args[0], array_keys( $post_formats ) ); + } else { + _doing_it_wrong( "add_theme_support( 'post-formats' )", __( 'You need to pass an array of types.' ), '5.6.0' ); + return false; } break; diff --git a/tests/phpunit/tests/post/formats.php b/tests/phpunit/tests/post/formats.php index 44cedfc9a6..7c49fb03b5 100644 --- a/tests/phpunit/tests/post/formats.php +++ b/tests/phpunit/tests/post/formats.php @@ -8,6 +8,16 @@ class Tests_Post_Formats extends WP_UnitTestCase { parent::setUp(); } + /** + * @ticket 51390 + */ + function test_post_format_doing_it_wrong() { + $this->setExpectedIncorrectUsage( "add_theme_support( 'post-formats' )" ); + + // The second parameter should be an array. + $this->assertFalse( add_theme_support( 'post-formats' ) ); + } + function test_set_get_post_format_for_post() { $post_id = self::factory()->post->create();