Как я могу установить значение ссылки на термин таксономии для нескольких терминов с помощью PHP?

7

Этот вопрос описывает, как установить значение поля ссылки на термин с помощью PHP. Но что мне делать, если я хочу установить значение поля ссылки на термин в профиле пользователя на несколько терминов?

Я пытаюсь установить значение для терминов с идентификаторами 27 и 28. Вот мой код:

$user->field_yourfield_name[LANGUAGE_NONE][0]['tid'] = 27;
user_save($user);
Патрик Кенни
источник

Ответы:

7

Предполагая, что поле настроено для приема нескольких записей ...

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

Или вы можете просто продолжать добавлять к массиву (не зная следующего доступного индекса), вот так:

$user->field_yourfield_name[LANGUAGE_NONE][]['tid'] = 27;
$user->field_yourfield_name[LANGUAGE_NONE][]['tid'] = 28;
Клайв
источник
1

Вы можете присвоить списку значение, которое содержит оболочку метаданных сущности . Например:

<?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
источник