Wie kann ich mit PHP den Wert eines Taxonomiebegriffs auf mehrere Begriffe festlegen?

8

Diese Frage beschreibt, wie Sie den Wert eines Begriffsreferenzfelds mit PHP festlegen. Aber was mache ich, wenn ich den Wert eines Begriffsreferenzfelds im Benutzerprofil auf mehrere Begriffe festlegen möchte?

Ich versuche, den Wert auf die Term-IDs 27 und 28 zu setzen. Hier ist mein bisheriger Code:

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

Antworten:

8

Angenommen, das Feld ist so eingerichtet, dass mehrere Datensätze akzeptiert werden ...

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

Oder Sie können einfach weiter an das Array anhängen (ohne den nächsten verfügbaren Index zu kennen):

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

Sie können einem Listenwert einen Entitätsmetadaten-Wrapper zuweisen . Zum Beispiel:

<?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
quelle