diff --git a/src/Http/Controllers/CP/Taxonomies/TaxonomiesController.php b/src/Http/Controllers/CP/Taxonomies/TaxonomiesController.php index afd03c44ac..0901cb1884 100644 --- a/src/Http/Controllers/CP/Taxonomies/TaxonomiesController.php +++ b/src/Http/Controllers/CP/Taxonomies/TaxonomiesController.php @@ -34,7 +34,7 @@ public function index() return [ 'id' => $taxonomy->handle(), 'title' => $taxonomy->title(), - 'terms' => $taxonomy->queryTerms()->count(), + 'terms' => $taxonomy->queryTerms()->pluck('slug')->unique()->count(), 'edit_url' => $taxonomy->editUrl(), 'delete_url' => $taxonomy->deleteUrl(), 'terms_url' => cp_route('taxonomies.show', $taxonomy->handle()), diff --git a/tests/Data/Taxonomies/TaxonomyTest.php b/tests/Data/Taxonomies/TaxonomyTest.php index 6d502da262..05d685bb34 100644 --- a/tests/Data/Taxonomies/TaxonomyTest.php +++ b/tests/Data/Taxonomies/TaxonomyTest.php @@ -18,7 +18,6 @@ use Statamic\Facades; use Statamic\Facades\Collection; use Statamic\Facades\Entry; -use Statamic\Facades\Site; use Statamic\Facades\User; use Statamic\Fields\Blueprint; use Statamic\Taxonomies\Taxonomy; @@ -291,6 +290,24 @@ public function it_trucates_terms() $this->assertCount(0, $taxonomy->queryTerms()->get()); } + #[Test] + public function it_get_terms_count_from_multi_sites() + { + $this->setSites([ + 'en' => ['url' => '/', 'locale' => 'en_US', 'name' => 'English'], + 'fr' => ['url' => '/', 'locale' => 'fr_FR', 'name' => 'French'], + 'de' => ['url' => '/', 'locale' => 'de_DE', 'name' => 'German'], + ]); + + $taxonomy = tap(Facades\Taxonomy::make('tags')->sites(['en', 'fr', 'de']))->save(); + Facades\Term::make()->taxonomy('tags')->slug('one')->data([])->save(); + Facades\Term::make()->taxonomy('tags')->slug('two')->data([])->save(); + Facades\Term::make()->taxonomy('tags')->slug('three')->data([])->save(); + + $this->assertCount(9, $taxonomy->queryTerms()->get()); + $this->assertEquals(3, $taxonomy->queryTerms()->pluck('slug')->unique()->count()); + } + #[Test] public function it_saves_through_the_api() {