From ffb86c05524a8ba32d1e5b251a2ce4b9ad670472 Mon Sep 17 00:00:00 2001 From: Boone Gorges Date: Mon, 4 Dec 2017 21:02:10 +0000 Subject: [PATCH] `get_the_category_by_ID()` should be taxonomy-agnostic. Prior to 4.9, this function was accidentally taxonomy-agnostic in most cases. The fix in [40979] caused a regression in this function. For backward compatibility, we make it explicit that the query is by ID only. See #42771. git-svn-id: https://develop.svn.wordpress.org/trunk@42367 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/category-template.php | 2 +- .../tests/category/getTheCategoryById.php | 53 +++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 tests/phpunit/tests/category/getTheCategoryById.php diff --git a/src/wp-includes/category-template.php b/src/wp-includes/category-template.php index 27061e7266..f2ed10895c 100644 --- a/src/wp-includes/category-template.php +++ b/src/wp-includes/category-template.php @@ -107,7 +107,7 @@ function get_the_category( $id = false ) { */ function get_the_category_by_ID( $cat_ID ) { $cat_ID = (int) $cat_ID; - $category = get_term( $cat_ID, 'category' ); + $category = get_term( $cat_ID ); if ( is_wp_error( $category ) ) { return $category; diff --git a/tests/phpunit/tests/category/getTheCategoryById.php b/tests/phpunit/tests/category/getTheCategoryById.php new file mode 100644 index 0000000000..3b1a4e4825 --- /dev/null +++ b/tests/phpunit/tests/category/getTheCategoryById.php @@ -0,0 +1,53 @@ +category->create( array( + 'name' => 'Foo', + ) ); + + $found = get_the_category_by_ID( $c ); + + $this->assertSame( 'Foo', $found ); + } + + /** + * @ticket 42771 + */ + public function test_should_return_link_for_term_from_another_taxonomy_on_primed_cache() { + register_taxonomy( 'wptests_tax', 'post' ); + + $t = self::factory()->term->create( array( + 'taxonomy' => 'wptests_tax', + 'name' => 'Foo', + ) ); + + $term = get_term( $t ); + + $found = get_the_category_by_ID( $t ); + + $this->assertSame( 'Foo', $found ); + } + + /** + * @ticket 42771 + */ + public function test_should_return_link_for_term_from_another_taxonomy_on_empty_cache() { + register_taxonomy( 'wptests_tax', 'post' ); + + $t = self::factory()->term->create( array( + 'taxonomy' => 'wptests_tax', + 'name' => 'Foo', + ) ); + + clean_term_cache( $t ); + + $found = get_the_category_by_ID( $t ); + + $this->assertSame( 'Foo', $found ); + } +}