Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the ultimate-addons-for-gutenberg domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /sites/danielkossmann.com/files/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the hustle domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /sites/danielkossmann.com/files/wp-includes/functions.php on line 6114
Como utilizar wp_insert_user() no WordPress (PHP) - Daniel Kossmann

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 *