Creates a taxonomy term of a given vocabulary.
It uses $this->field_names to populate content of attached fields. You can access fields values using $this->field_names['taxonomy_term'][$vocabulary->id(].
object $vocabulary: Vocabulary object for which the term should be created.
object Newly created node object.
function createTaxonomyTerm(VocabularyInterface $vocabulary) {
$term = Term::create(array(
'name' => $this
->randomMachineName(),
'description' => $this
->randomMachineName(),
'vid' => $vocabulary
->id(),
'langcode' => 'en',
));
foreach ($this->field_names['taxonomy_term'][$vocabulary
->id()] as $field_name) {
$field_definition = $term
->getFieldDefinition($field_name);
$cardinality = $field_definition
->getFieldStorageDefinition()
->getCardinality() == FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED ? 1 : $field_definition
->getCardinality();
$field_lang = $field_definition
->isTranslatable() ? 'en' : LanguageInterface::LANGCODE_DEFAULT;
// Create two deltas for each field.
for ($delta = 0; $delta <= $cardinality; $delta++) {
$term
->getTranslation($field_lang)
->get($field_name)
->get($delta)->value = $this
->randomMachineName(20);
if ($field_definition
->getType() == 'text_with_summary') {
$term
->getTranslation($field_lang)
->get($field_name)
->get($delta)->summary = $this
->randomMachineName(10);
}
}
}
$term
->save();
return $term;
}