web-dev-qa-db-ja.com

プログラムでカスタムフィールドを設定する方法

ユーザーオブジェクトのカスタムフィールドをプログラムで変更しようとしていますが、ほとんど成功しません。関数を使用して、field_get_itemsのようなオブジェクトのフィールドを設定します。ただし、セッターバージョンは除きます。

私はできるようです:

$account = user_load($GLOABALS['user']->uid);

$edit = array(
    'field_custom' => array(
        'und' => array(
            0 => array(
                'value' => $lead_id
            )
        )
    )
);

user_save($account, $edit)

しかし、これを行うにはもっと良い方法があるはずです。

任意の助けいただければ幸いです。ありがとう!

3
Troy Swanson

エンティティモジュールラッパー を使用します。

エンティティAPIは、エンティティを簡単に処理し、提供されたエンティティプロパティ情報モジュールを活用するために使用できるいくつかのラッパークラスを提供します。ラッパーを使用して、プロパティ情報にアクセスしたり、既知のプロパティをループしたり、記述されたデータ値を取得/設定したりできます。

エンティティモジュール をインストールして、次のようにします。

$user = user_load($GLOBALS['user']->uid);
$obj = entity_metadata_wrapper('user', $user);
$obj->field_custom = $lead_id;
$obj->save();

$ GLOBALSは http://php.net/manual/en/reserved.variables.globals.php

9
Web Assistant