簡體   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