web-dev-qa-db-ja.com

PHPを使用して、分類用語参照の値を複数の用語に設定するにはどうすればよいですか?

この質問 は、PHPを使用して用語参照フィールドの値を設定する方法を説明しています。しかし、ユーザープロファイルの用語参照フィールドの値を複数の用語に設定する場合はどうすればよいですか?

値を用語ID 27および28に設定しようとしています。これまでのコードは次のとおりです。

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

フィールドが複数のレコードを受け入れるように設定されていると仮定します...

$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;
8
Clive

エンティティメタデータラッパー を含むリスト値に割り当てることができます。例えば:

<?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();
?>
1
kenorb