如果未设置昵称,我尝试在登录时将用户的display\\u name和昵称设置为用户电子邮件地址的第一部分(在@之前)。
到目前为止,我已经:
add_action( \'wp_login\', \'force_nicknames_on_login\' );
function force_nicknames_on_login( $username ) {
$user = get_user_by( \'login\', $username );
$nickname = get_user_meta( $user->ID, \'nickname\', true );
$email = $user_info->user_email;
$email = substr( $email, 0, strpos( $email, "@" ) );
if ( empty ($nickname) ) {
$nickname = $email;
}
if ( ! empty( $nickname ) && ( $user->data->display_name != $nickname ) ) {
$userdata = array(
\'ID\' => $user->ID,
\'nickname\' => $nickname,
\'display_name\' => $nickname,
);
wp_update_user( $userdata );
}
}
如果已经设置了昵称,它似乎会将显示名称设置为昵称,但如果用户注册时没有昵称,则不会在@之前通过电子邮件。
最合适的回答,由SO网友:Rick Hellewell 整理而成
我认为你需要重新考虑你的逻辑,决定将空昵称设置为电子邮件。
您需要按以下顺序执行此操作:
如果昵称为空,请将其设置为电子邮件(如果需要,请去掉“@”后面的部分)。然后,您应该为显示名称(无论输入什么)和昵称(无论输入什么,如果没有输入,则为其电子邮件)设置值,然后您可以存储这些值。不过,我注意,结果数据可能有问题。电子邮件地址可能没有良好的“可见”(可识别?)昵称的值。电子邮件可能有一些价值,但作为昵称看起来并不好。
因此,也许需要一个昵称更好,或者让昵称为空。可能需要“名字/姓氏”、电子邮件和昵称(可见名称)。如果可见名称为空,请输入名字/姓氏。但提醒用户将使用他们的名字/姓氏,因此他们可能需要输入昵称。(还有GDPR的东西……)