¿Cómo puedo establecer el valor de una referencia de término de taxonomía a varios términos usando PHP?


7

Esta pregunta describe cómo establecer el valor de un campo de referencia de término usando PHP. Pero, ¿qué debo hacer si quiero establecer el valor de un campo de referencia de término en el perfil de usuario en varios términos?

Estoy tratando de establecer el valor para los ID de término 27 y 28. Aquí está mi código hasta ahora:

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

Respuestas:


7

Asumiendo que el campo está configurado para aceptar múltiples registros ...

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

O simplemente puede seguir agregando a la matriz (sin conocer el siguiente índice disponible) de esta manera:

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

1

Puede asignar a un valor de lista que contenga contenedor de metadatos de entidad . Por ejemplo:

<?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();
?>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.