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);

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;

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();
?>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.