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

问题描述 投票:1回答:1

关于在通过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 );
}
wordpress woocommerce account
1个回答
0
投票

我已经更新了问题,以包括完整的代码。因为我们正在处理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 );
}
© www.soinside.com 2019 - 2024. All rights reserved.