Skip to content

Commit 0f7ff14

Browse files
committed
Fix taxonomy terms not being imported correctly
1 parent 3e5e21c commit 0f7ff14

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

src/Transformers/TermsTransformer.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ public function transform(string $value): null|string|array
3333

3434
$term->save();
3535

36-
return $term->id();
36+
return count($this->field->get('taxonomies')) > 1 ? $term->id() : $term->slug();
3737
}
3838

39-
return $term?->id();
39+
return count($this->field->get('taxonomies')) > 1 ? $term?->id() : $term?->slug();
4040
})->filter();
4141

4242
return $this->field->get('max_items') === 1 ? $terms->first() : $terms->all();

tests/Transformers/TermsTransformerTest.php

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Statamic\Importer\Tests\Transformers;
44

55
use PHPUnit\Framework\Attributes\Test;
6+
use Statamic\Facades\Blueprint;
67
use Statamic\Facades\Collection;
78
use Statamic\Facades\Taxonomy;
89
use Statamic\Facades\Term;
@@ -52,7 +53,32 @@ public function it_finds_existing_terms()
5253

5354
$output = $transformer->transform('Category One|Category Two|Category Three');
5455

55-
$this->assertEquals(['categories::one', 'categories::two', 'categories::three'], $output);
56+
$this->assertEquals(['one', 'two', 'three'], $output);
57+
}
58+
59+
#[Test]
60+
public function it_finds_existing_terms_across_multiple_taxonomies()
61+
{
62+
Taxonomy::make('tags')->sites(['default'])->save();
63+
64+
Term::make()->taxonomy('categories')->slug('one')->set('title', 'Category One')->save();
65+
Term::make()->taxonomy('categories')->slug('two')->set('title', 'Category Two')->save();
66+
Term::make()->taxonomy('categories')->slug('three')->set('title', 'Category Three')->save();
67+
Term::make()->taxonomy('tags')->slug('foo')->set('title', 'Foo')->save();
68+
69+
$blueprint = Blueprint::find($this->blueprint->fullyQualifiedHandle());
70+
$blueprint->ensureField('stuff', ['type' => 'terms', 'taxonomies' => ['categories', 'tags']])->save();
71+
72+
$transformer = new TermsTransformer(
73+
import: $this->import,
74+
blueprint: $blueprint,
75+
field: $blueprint->field('stuff'),
76+
config: ['related_field' => 'title']
77+
);
78+
79+
$output = $transformer->transform('Category One|Category Two|Category Three|Foo');
80+
81+
$this->assertEquals(['categories::one', 'categories::two', 'categories::three', 'tags::foo'], $output);
5682
}
5783

5884
#[Test]

0 commit comments

Comments
 (0)