From f493ebb3695c86e4e80426cf5dea944dd568e665 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Thu, 17 Nov 2016 18:01:13 +0000 Subject: [PATCH] Taxonomy: Prevent `wp_list_categories()` from producing not well-nested output if `hide_title_if_empty` is true. Props chesio. Fixes #38839. See #33460. git-svn-id: https://develop.svn.wordpress.org/trunk@39280 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/category-template.php | 3 ++- .../phpunit/tests/category/wpListCategories.php | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/category-template.php b/src/wp-includes/category-template.php index fab2640c0b..ac992d6b3c 100644 --- a/src/wp-includes/category-template.php +++ b/src/wp-includes/category-template.php @@ -624,8 +624,9 @@ function wp_list_categories( $args = '' ) { $output .= walk_category_tree( $categories, $depth, $r ); } - if ( $r['title_li'] && 'list' == $r['style'] ) + if ( $r['title_li'] && 'list' == $r['style'] && ( ! empty( $categories ) || ! $r['hide_title_if_empty'] ) ) { $output .= ''; + } /** * Filters the HTML output of a taxonomy list. diff --git a/tests/phpunit/tests/category/wpListCategories.php b/tests/phpunit/tests/category/wpListCategories.php index 061496a8a6..571dc04975 100644 --- a/tests/phpunit/tests/category/wpListCategories.php +++ b/tests/phpunit/tests/category/wpListCategories.php @@ -265,6 +265,22 @@ class Tests_Category_WpListCategories extends WP_UnitTestCase { $this->assertContains( '
  • Categories', $found ); } + /** + * @ticket 38839 + */ + public function test_hide_title_if_empty_should_not_output_stray_closing_tags() { + $cat = self::factory()->category->create(); + + $found = wp_list_categories( array( + 'echo' => false, + 'show_option_none' => '', + 'child_of' => 1, + 'hide_title_if_empty' => true, + ) ); + + $this->assertNotContains( '
  • ', $found ); + } + /** * @ticket 12981 */