Com a função wp_insert_user() você adiciona um usuário no WordPress. Ela possui apenas um parâmetro ($userdata) que pode ser: um array, um objeto ou objeto WP_User com os dados do usuário. Veja abaixo um modelo desta estrutura de dados com detalhes de cada uma das suas chaves:

<?php
$dados_usuario = [
	'user_pass'            => '',      // (string) Senha do usuário no formato texto (será criptografada depois).
	'user_login'           => '',      // (string) O nome de usuário.
	'user_nicename'        => '',      // (string) O nome de usuário amigável para URLs. Veja sanitize_user().
	'user_url'             => '',      // (string) O endereço do site (URL) do usuário, com até 100 caracteres.
	'user_email'           => '',      // (string) O e-mail do usuário.
	'display_name'         => '',      // (string) O nome do usuário a ser exibido. Padrão é: user_login.
	'nickname'             => '',      // (string) Apelido do usuário. Padrão é: user_login.
	'first_name'           => '',      // (string) Primeiro nome do usuário.
	'last_name'            => '',      // (string) Sobrenome do usuário.
	'description'          => '',      // (string) Biografia do usuário.
	'rich_editing'         => 'true',  // (string) Habilita editor rico para o usuário. Padrão é: 'true'.
	'syntax_highlighting'  => 'true',  // (string) Habilita editor rico de código para o usuário. Padrão é: 'true'.
	'comment_shortcuts'    => 'false', // (string) Habilita atalhos de teclado para moderação de comentários. Padrão é: 'false'.
	'admin_color'          => 'fresh', // (string) Paleta de cores da área administrativa. Padrão é: 'fresh'.
	'use_ssl'              => false,   // (bool) Usuário deve sempre acessar a área administrativa com HTTPS. Padrão é: false.
	'user_registered'      => '',      // (string) Data de registro do usuário no formato: 'Y-m-d H:i:s'.
	'user_activation_key'  => '',      // (string) Chave para resetar a senha. Padrão é: vazio.
	'spam'                 => '',      // (bool) Diferente de vazio somente para multisite, diz se o usuário foi marcado como spam. Padrão é: false.
	'show_admin_bar_front' => 'true',  // (string) Exibe a barra administrativa fixa no topo do site. Padrão é: 'true'.
	'role'                 => '',      // (string) Função do usuário.
	'locale'               => '',      // (string) Locale do usuário.
	'meta_input'           => [],      // (array) [ 'chave' => 'valor' ]
];
Code language: PHP (php)

Algumas informações importantes:

  1. Várias opções possuem valores booleanos entre aspas, como 'true' ou 'false', por serem strings. As duas únicas opções que recebem valores booleanos puros são use_ssl e spam;
  2. Apesar de ser possível atualizar as informações de um usuário se você especificar um ID, alguns efeitos colaterais podem acontecer se os parâmetros corretos não forem informados, por isso é mais recomendado utilizar a função wp_update_user() para a atualização de dados. Por este motivo não adicionei este parâmetro no modelo acima;
  3. O valor de user_url não pode exceder 100 caracteres, caso contrário o usuário não será criado e será retornado 0. Isto acontece pois na tabela wp_users a coluna user_url é do tipo varchar(100);
  4. Um usuário pode ser criado sem endereço de e-mail;
  5. A documentação de Roles and Capabilities explica mais sobre os diferentes valores para 'role'.

Exemplos de como utilizar a função wp_insert_user()

Veja abaixo cinco exemplos de uso, com comentários sobre cada um:

<?php
// Para criar um usuário, o único campo obrigatório da função é o nome de usuário
$dados_usuario = [
	'user_login'           => 'Daniel Kossmann',
];
$adicao_usuario = wp_insert_user( $dados_usuario );

// Criando um usuário com login e e-mail. A senha será gerada automaticamente.
$dados_usuario = [
	'user_login'           => 'Daniel Kossmann',
	'user_email'           => 'nome@dominio.com.br',
];
$adicao_usuario = wp_insert_user( $dados_usuario );

// Criando um usuário com senha, login e e-mail.
$dados_usuario = [
	'user_pass'            => 's3nH4-[mu1T0~sEgUr4)',
	'user_login'           => 'Daniel Kossmann',
	'user_email'           => 'nome@dominio.com.br',
];
$adicao_usuario = wp_insert_user( $dados_usuario );

// Criando um novo usuário administrador.
$dados_usuario = [
	'user_pass'            => 's3nH4-[mu1T0~sEgUr4)',
	'user_login'           => 'Daniel Kossmann',
	'user_email'           => 'nome@dominio.com.br',
	'role'                 => 'administrator',	
];
$adicao_usuario = wp_insert_user( $dados_usuario );

// Criando um novo usuário como editor, informando mais dados
$dados_usuario = [
	'user_pass'            => 's3nH4-[mu1T0~sEgUr4)',
	'user_login'           => 'Daniel Kossmann5',
	'user_nicename'        => 'daniel-kossmann5',
	'user_url'             => 'https://www.danielkossmann.com',
	'user_email'           => 'nome@dominio.com.br5',
	'display_name'         => 'Daniel Kossmann',
	'nickname'             => 'Kossmann',
	'first_name'           => 'Daniel',
	'last_name'            => 'Kossmann',
	'description'          => 'Apaixonado por WordPress e criador da newsletter PainelWP.',
	'show_admin_bar_front' => 'false', // Desabilita barra de admin fixa
	'role'                 => 'editor',
	'locale'               => 'pt_BR',
];
$adicao_usuario = wp_insert_user( $dados_usuario );
Code language: PHP (php)

Aviso importante: Estes códigos foram criados apenas para fins didáticos, por isso nem sempre possuem todas as melhores práticas de segurança e otimizações necessárias. Portando, não me responsabilizo pelo seu uso em qualquer tipo de ambiente ou dou qualquer tipo de garantia para eles. Se você desejar utilizá-los será por sua própria conta e risco.

Qual a diferença entre wp_insert_user() e wp_create_user()?

A principal diferença entre wp_insert_user() e wp_create_user() é a possibilidade de especificar mais informações sobre o usuário na primeira, enquanto na segunda só é permitido especificar três informações: nome de usuário, senha e e-mail.

Como a função wp_create_user() utiliza internamente a função wp_insert_user() para a criação do usuário, posso dizer que a wp_create_user() é uma abstração simplificada da função wp_insert_user().



Comments

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *