この質問 は、PHPを使用して用語参照フィールドの値を設定する方法を説明しています。しかし、ユーザープロファイルの用語参照フィールドの値を複数の用語に設定する場合はどうすればよいですか?
値を用語ID 27および28に設定しようとしています。これまでのコードは次のとおりです。
$user->field_yourfield_name[LANGUAGE_NONE][0]['tid'] = 27;
user_save($user);
フィールドが複数のレコードを受け入れるように設定されていると仮定します...
$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;
エンティティメタデータラッパー を含むリスト値に割り当てることができます。例えば:
<?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();
?>