Como posso definir o valor de uma referência de termo de taxonomia para vários termos usando PHP?

7

Esta pergunta descreve como definir o valor de um campo de referência de termos usando PHP. Mas o que devo fazer se quiser definir o valor de um campo de referência de termos no perfil do usuário para vários termos?

Estou tentando definir o valor para os termos IDs 27 e 28. Aqui está o meu código até agora:

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

Respostas:

7

Supondo que o campo esteja configurado para aceitar vários registros ...

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

Ou você pode continuar anexando à matriz (sem saber o próximo índice disponível) assim:

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

Você pode atribuir a um valor de lista que contenha o wrapper de metadados da entidade . Por exemplo:

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