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


7

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

値を用語ID 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();
?>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.