Comment puis-je définir la valeur d'une référence de terme de taxonomie sur plusieurs termes à l'aide de PHP?

7

Cette question décrit comment définir la valeur d'un champ de référence de terme à l'aide de PHP. Mais que dois-je faire si je souhaite définir la valeur d'un champ de référence de terme dans le profil utilisateur sur plusieurs termes?

J'essaye de placer la valeur aux termes ID 27 et 28. Voici mon code jusqu'à présent:

$user->field_yourfield_name[LANGUAGE_NONE][0]['tid'] = 27;
user_save($user);
Patrick Kenny
la source

Réponses:

7

En supposant que le champ est configuré pour accepter plusieurs enregistrements ...

$user->field_yourfield_name[LANGUAGE_NONE][0]['tid'] = 27;
$user->field_yourfield_name[LANGUAGE_NONE][1]['tid'] = 28;
// etc

Ou vous pouvez simplement continuer à ajouter au tableau (sans connaître le prochain index disponible) comme ceci:

$user->field_yourfield_name[LANGUAGE_NONE][]['tid'] = 27;
$user->field_yourfield_name[LANGUAGE_NONE][]['tid'] = 28;
Clive
la source
1

Vous pouvez affecter à une valeur de liste qui contient un wrapper de métadonnées d'entité . Par exemple:

<?php
  $wrapper = entity_metadata_wrapper('user', $user);
  foreach ($wrapper->field_taxonomy_terms->getIterator() as $delta => $term_wrapper) {
    // $term_wrapper may now be accessed as a taxonomy term wrapper.
    $label = $term_wrapper->name->value();
    $tid = $term_wrapper->tid->value();
    // you can also set the values
    $term_wrapper->name = 'New label';
    $term_wrapper->tid = array(123, 1234); // or ...
    $term_wrapper->tid->set($tids_to_set);
  }
  $wrapper->save();
?>
kenorb
la source