设置/帐户下的WooCommerce有一个名为
的选项自动从客户电子邮件中生成用户名
但它生成的用户名不是完整的电子邮件地址。
my.email@example.com
作为用户名变为myemail
。
我需要使用什么方法来覆盖用户生成以便使用 完整电子邮件是否已设置为用户名?
答案 0 :(得分: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;
}
答案 1 :(得分:4)
您可以在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 );