diff --git a/src/wp-includes/class-wp-query.php b/src/wp-includes/class-wp-query.php index 339acdb520..8f26786c91 100644 --- a/src/wp-includes/class-wp-query.php +++ b/src/wp-includes/class-wp-query.php @@ -1118,7 +1118,7 @@ class WP_Query { 'field' => 'slug', ); - if ( isset( $t->rewrite['hierarchical'] ) && $t->rewrite['hierarchical'] ) { + if ( ! empty( $t->rewrite['hierarchical'] ) ) { $q[ $t->query_var ] = wp_basename( $q[ $t->query_var ] ); } diff --git a/src/wp-includes/taxonomy.php b/src/wp-includes/taxonomy.php index 7bf2fae19d..d9dd34ccf5 100644 --- a/src/wp-includes/taxonomy.php +++ b/src/wp-includes/taxonomy.php @@ -4475,7 +4475,7 @@ function get_term_link( $term, $taxonomy = '' ) { } $termlink = home_url( $termlink ); } else { - if ( $t->rewrite['hierarchical'] ) { + if ( ! empty( $t->rewrite['hierarchical'] ) ) { $hierarchical_slugs = array(); $ancestors = get_ancestors( $term->term_id, $taxonomy, 'taxonomy' ); foreach ( (array) $ancestors as $ancestor ) { diff --git a/tests/phpunit/tests/term/getTermLink.php b/tests/phpunit/tests/term/getTermLink.php index c9e6e2c5a8..b9a832e57a 100644 --- a/tests/phpunit/tests/term/getTermLink.php +++ b/tests/phpunit/tests/term/getTermLink.php @@ -104,6 +104,36 @@ class Tests_Term_GetTermLink extends WP_UnitTestCase { $this->assertContains( 'term=bar', $actual ); } + /** + * @ticket 52882 + */ + public function test_taxonomy_with_rewrite_false_and_custom_permalink_structure() { + $this->set_permalink_structure( '/%year%/%monthnum%/%day%/%postname%/' ); + + register_taxonomy( + 'wptests_tax2', + 'post', + array( + 'rewrite' => false, + ) + ); + + add_permastruct( 'wptests_tax2', 'foo/%wptests_tax2%' ); + + $t = self::factory()->term->create( + array( + 'taxonomy' => 'wptests_tax2', + 'slug' => 'bar', + ) + ); + + $actual = get_term_link( $t, 'wptests_tax2' ); + + remove_permastruct( 'wptests_tax2' ); + + $this->assertContains( '/foo/bar/', $actual ); + } + public function test_taxonomy_permastruct_with_hierarchical_rewrite_should_put_term_ancestors_in_link() { $this->set_permalink_structure( '/%year%/%monthnum%/%day%/%postname%/' );