Como criar programaticamente novo usuário com campos personalizados?

18

Eu quero criar usuário com alguns campos personalizados. Criei campos extras através de config> people> site information> gerencie campos e campos como nome, sobrenome, cidade etc. Desejo criar usuário com esses campos personalizados.

Como posso criar usuário programaticamente?

Pranav Gandhi
fonte

Respostas:

25

Usando a user_savefunção Drupal, você pode criar novos usuários como:

$new_user = array(
  'name' => 'JohnDoe',
  'mail' => '[email protected]',
  'pass' => 'password123',
  'status' => 1,
  'field_custom_first_name' => array(LANGUAGE_NONE => array(array('value' => 'John'))), // This becomes $account->field_custom_first_name[LANGUAGE_NONE][0]['value']
  'field_custom_last_name' => array(LANGUAGE_NONE => array(array('value' => 'Doe'))),
  'access' => REQUEST_TIME,
  'roles' => array(), // No other roles than Authenticated
  //'roles' => array('10' => '10', '11' => '11'), // If you want to specify additional roles, the numbers are role_id's
);
user_save(NULL, $new_user);
Beebee
fonte
Não tenho certeza do que accessfaz, copiei isso dos comentários da página user_save no do e modifiquei-os, por isso não sou 100% do que accessfaz. Suponho que seja a última data de acesso; portanto, se for um novo usuário, acho que não deve ser definido.
Beebee
Obrigado, está funcionando bem para mim. e desculpe pela repetição tardia.
Pranav Gandhi
@GandhiPranav Não se esqueça de aceitar as respostas às suas perguntas se elas o ajudaram; isso permite que os futuros visitantes saibam que uma solução específica foi a que resolveu seu problema específico e recompensa o respondente por seus esforços. Você pode aceitar uma resposta clicando na marca de seleção abaixo do indicador de votação. Obrigado :)
Clive
O acesso é apenas o campo do último acesso (como o "criado" campo
ergophobe
Isso funciona para criar novos usuários, mas não existe uma entidade "preferida" como nos nós? Algo envolvendo entity_create_stub_entity ('user') ou entity_metadata_wrapper (..)? Eu pergunto porque eu tenho lutado fazendo isso da maneira entidade .. :)
texas-Bronius