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

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;

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();
?>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.