Como alterar programaticamente o nome de usuário (user_login)?


15

Como no título, como alterar programaticamente o login do usuário?

Eu queria usar a wp_insert_userfunção, mas parece que, ao atualizar o usuário atual, ele não altera o nome de usuário. Devo usar $wpdb->updatepara isso? Se sim, como seria o código para alterar o nome de usuário? Quais as consequências da alteração do login do usuário, uma vez que a API do WordPress não permite a alteração de nomes de usuário?

Respostas:


21

Eu tinha certeza de que a wp_update_userfunção deveria fazer isso ( http://codex.wordpress.org/Function_Reference/wp_update_user ).

Ele ainda obtém user_login como parâmetro, mas parece que o ignora quando você define esse parâmetro.

Portanto, este código parece bom, mas não funciona como você deseja :(:

wp_update_user( array ( 'ID' => $user_id, 'user_login' => $new_login ) ) ;

Você precisa chamar a consulta SQL personalizada para atualizar o user_login:

$wpdb->update($wpdb->users, array('user_login' => $new_user_login), array('ID' => $user_id));

Funciona bem e não acho que tenha sérias conseqüências, porque o WP usa o ID do usuário para atribuir postagens / comentários (e assim por diante) ao usuário.

O único problema que consigo pensar é que, quando esse usuário está conectado no momento, ele será desconectado após a alteração do user_login.


1
Na verdade, verifique as notas para esta função (assim como o código): Observe que não podemos alterar os nomes de usuários por meio dessa função; na verdade, os nomes de usuário não podem ser alterados no painel do administrador, pois o WordPress não permite que os nomes de usuário sejam alterados. ser atualizado.
Mateusz Hajdziony

Obrigado, isso funciona muito bem! No entanto, não se preocupe com usuários logados, pois só permito a alteração do nome de usuário para usuários desconectados (ativação da conta por e-mail).
Mateusz Hajdziony

@pogoking Uma coisa que você pode querer considerar é que os permalinks de usuário ou autor podem ser interrompidos após permitir que os usuários alterem seus nomes de usuário se houver permalinks bastante habilitados, portanto, é necessário tomar medidas para compensar isso.
precisa

1
eu precisava adicionar global $ wpdb; para fazê-lo funcionar #
Mau

4
Post antigo, mas im olhando para fazer isso mesmo, seria vale a pena conferir lá não é outro usuário com o mesmo user_login registrado em seu site como o formulário de login, obviamente, usa esse valor para localizar contas e hashes de senha jogo
haxxxton

4

Você pode considerar alterar o nome_do_usuário também através da consulta SQL. Feito isso, todos os links permanentes e outras funções funcionarão perfeitamente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.