首先,确保通过 WooCommerce 设置检查以下选项
通常情况下,您可以使用woocommerce_new_customer_username 过滤器挂钩来更改生成的用户名。
复制自includes/wc-user-functions.php
/**
* Filter new customer username.
*
* @since 3.7.0
* @param string $username Customer username.
* @param string $email New customer email address.
* @param array $new_user_args Array of new user args, maybe including first and last names.
* @param string $suffix Append string to username to make it unique.
*/
return apply_filters( 'woocommerce_new_customer_username', $username, $email, $new_user_args, $suffix );
但是,您想根据$user_id 确定$username,
但是$user_id是在通过wp_insert_user()添加用户名、电子邮件地址等数据后确定的
因此解决方案是在用户注册后立即基于$user_id 更新$username,这可以通过以下方式完成:
复制自wp-includes/user.php (WordPress)
/**
* Fires immediately after a new user is registered.
*
* @since 1.5.0
*
* @param int $user_id User ID.
*/
do_action( 'user_register', $user_id );
和
所以你得到:
function action_user_register( $user_id ) {
global $wpdb;
// Set new name + nickname
$new_name = 'something_' . $user_id;
// Update user user_login
$wpdb -> update( $wpdb -> users,
array( 'user_login' => $new_name, 'user_nicename' => $new_name, 'display_name' => $new_name ),
array( 'ID' => $user_id )
);
// Update user meta
update_user_meta( $user_id, 'first_name', $new_name );
update_user_meta( $user_id, 'nickname', $new_name );
}
add_action( 'user_register', 'action_user_register', 10, 1 );
注意:知道客户/用户可以通过他的个人资料(我的帐户)更改其中一些调整,如果您不希望这样做,则必须进行其他调整。