如何更新当前登录的用户用户名

时间:2016-12-30 作者:David Guida

我需要保持用户名和用户的电子邮件同步。我不知道是否有更好的方法,因此我尝试在用户更新其配置文件数据后立即运行此代码:

global $wpdb;
$wpdb->update(
    $wpdb->users,
    array(\'user_login\' => $email),
    array(\'ID\' => $user->ID)
);
但这样,身份验证cookie将无效,用户将注销。

我还尝试在更新后立即强制创建身份验证cookie,如下所示:

wp_clear_auth_cookie();
$user = get_user_by( \'id\', $user_id ); 
if( $user ) {
    wp_set_current_user( $user_id, $user->user_login );
    wp_set_auth_cookie( $user_id, true );
    do_action( \'wp_login\', $user->user_login );
}
但没有结果。

1 个回复
SO网友:Evan Mattson

创建或更新用户后,立即尝试挂接。

<?php

function wpse_250785_sync_user_login_with_email($user_id) {
    $user = new WP_User($user_id);

    if ($user->user_login != $user->user_email) {
        $user->user_login = $user->user_email;
        wp_update_user($user);
    }
}
add_action(\'user_register\', \'wpse_250785_sync_user_login_with_email\');
add_action(\'profile_update\', \'wpse_250785_sync_user_login_with_email\');
免责声明:未经测试,但应能正常工作;)