繁体   English   中英

更改电子邮件时更新用户名 (User_Login) (WooCommerce)

[英]Update Username (User_Login) on Email Change (WooCommerce)

在通过My Account注册时使用电子邮件地址作为用户名在 StackOverflow 上提出了许多问题。 我有下面包含的工作代码。

$this->loader->add_filter('pre_user_login', $plugin_public, 'audp_wc_register_email_as_username' );

public function audp_wc_register_email_as_username( $user_login ) {

    if ( isset ( $_POST['email'] ) ) {

        $user_login = $_POST['email'];

    }

    return $user_login;

}

我已经使用以下代码更新了我自己的问题以更新 user_login 详细信息。

$this->loader->add_action( 'woocommerce_save_account_details', $plugin_public, 'audp_wc_update_email_and_username', 20, 1 );

public function audp_wc_update_email_and_username() {

    if ( isset( $_POST['account_email'] ) ) {

        global $wpdb;

        $user_id = get_current_user_id();
        $new_login = $_POST['account_email'];

        // Update user user_login
        $wpdb -> update( $wpdb -> users, 
            array( 'user_login' => $new_login, 'user_nicename' => $new_nicename ), 
            array( 'ID' => $user_id )
        );      
    }   
    // Update nickname
    update_user_meta( $user_id, 'nickname', $new_login );
}

我已经更新了问题以包含完整的代码。 因为我们正在处理 user_login 我们不能使用 wp_update_user(),我使用了上面的类描述,但下面的代码是标准(非类)函数。

add_action( 'woocommerce_save_account_details', 'audp_wc_update_email_and_username', 20, 1 );
function audp_wc_update_email_and_username() {

if ( isset( $_POST['account_email'] ) ) {

    global $wpdb;

    $user_id = get_current_user_id();
    $new_login = $_POST['account_email'];

        // Update user user_login
        $wpdb -> update( $wpdb -> users, 
            array( 'user_login' => $new_login, 'user_nicename' => $new_nicename ), 
            array( 'ID' => $user_id ) 
        );

    // Update nickname
    update_user_meta( $user_id, 'nickname', $new_login );
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM