diff --git a/includes/classes/Feature/Facets/Facets.php b/includes/classes/Feature/Facets/Facets.php index 18d7b06540..be8c583f9f 100644 --- a/includes/classes/Feature/Facets/Facets.php +++ b/includes/classes/Feature/Facets/Facets.php @@ -441,16 +441,13 @@ public function build_query_url( $filters ) { */ $query_string = apply_filters( 'ep_facet_query_string', $query_string ); - if ( is_post_type_archive() ) { - $pagination = strpos( $_SERVER['REQUEST_URI'], '/page' ); - - if ( false !== $pagination ) { - $url = substr( $_SERVER['REQUEST_URI'], 0, $pagination ); - return strtok( $url, '?' ) . ( ( ! empty( $query_string ) ) ? '/?' . $query_string : '' ); - } + $url = $_SERVER['REQUEST_URI']; + $pagination = strpos( $url, '/page' ); + if ( false !== $pagination ) { + $url = substr( $url, 0, $pagination ); } - return strtok( $_SERVER['REQUEST_URI'], '?' ) . ( ( ! empty( $query_string ) ) ? '?' . $query_string : '' ); + return strtok( trailingslashit( $url ), '?' ) . ( ( ! empty( $query_string ) ) ? '?' . $query_string : '' ); } /** diff --git a/tests/php/features/TestFacet.php b/tests/php/features/TestFacet.php new file mode 100644 index 0000000000..d66962bc74 --- /dev/null +++ b/tests/php/features/TestFacet.php @@ -0,0 +1,81 @@ +get_registered_feature( 'facets' ); + + $filters = [ + 'taxonomies' => [ + 'category' => [ + 'terms' => [ + 'augue' => 1 + ] + ] + ] + ]; + + $this->assertEquals( '/?filter_category=augue', $facet_feature->build_query_url( $filters ) ); + + set_query_var( 's', 'dolor' ); + $this->assertEquals( '/?s=dolor&filter_category=augue', $facet_feature->build_query_url( $filters ) ); + + set_query_var( 's', '' ); + $filters = [ + 'taxonomies' => [ + 'category' => [ + 'terms' => [ + 'augue' => 1, + 'consectetur' => 1 + ] + ] + ] + ]; + + $this->assertEquals( '/?filter_category=augue,consectetur', $facet_feature->build_query_url( $filters ) ); + + $_SERVER['REQUEST_URI'] = 'test/page/1'; + + set_query_var( 's', 'dolor' ); + $this->assertEquals( 'test/?s=dolor&filter_category=augue,consectetur', $facet_feature->build_query_url( $filters ) ); + + } + +}