通过 WooCommerce 注册时将完整的电子邮件地址设置为用户名

Pat*_*lug 6 php wordpress woocommerce

设置/帐户下的 WooCommerce 有一个名为的选项

从客户电子邮件自动生成用户名

但它生成的用户名不是完整的电子邮件地址。

my.email@example.com

成为myemail用户名。

我需要使用什么方法来覆盖用户生成,以便将 完整的电子邮件设置为用户名?

Mar*_*jdr 6

你可以在你的functions.php 中使用这样的东西。该woocommerce_new_customer_username过滤器可以用来改变生成的用户名。如果您只是将客户电子邮件作为用户名返回,则将使用它而不是生成的电子邮件(在您的情况下是@ 之前的名称)。

function my_new_customer_username( $username, $email, $new_user_args, $suffix ) {
    return $email;
}
add_filter( 'woocommerce_new_customer_username', 'my_new_customer_username', 10, 4 );
Run Code Online (Sandbox Code Playgroud)


Var*_*mar 4

只需使用钩子即可pre_user_login

add_filter( 'pre_user_login' , 'wpso_same_user_email' );

function wpso_same_user_email( $user_login ) {

    if( isset($_POST['billing_email'] ) ) {
        $user_login = $_POST['billing_email'];
    }
    if( isset($_POST['email'] ) ) {
        $user_login = $_POST['email'];
    }
    return $user_login;
}
Run Code Online (Sandbox Code Playgroud)