将用户昵称和显示名称设置为缩写电子邮件

时间:2019-04-05 作者:matthewh86

如果未设置昵称,我尝试在登录时将用户的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 );
    }
}
如果已经设置了昵称,它似乎会将显示名称设置为昵称,但如果用户注册时没有昵称,则不会在@之前通过电子邮件。

1 个回复
最合适的回答,由SO网友:Rick Hellewell 整理而成

我认为你需要重新考虑你的逻辑,决定将空昵称设置为电子邮件。

您需要按以下顺序执行此操作:

如果昵称为空,请将其设置为电子邮件(如果需要,请去掉“@”后面的部分)。然后,您应该为显示名称(无论输入什么)和昵称(无论输入什么,如果没有输入,则为其电子邮件)设置值,然后您可以存储这些值。不过,我注意,结果数据可能有问题。电子邮件地址可能没有良好的“可见”(可识别?)昵称的值。电子邮件可能有一些价值,但作为昵称看起来并不好。

因此,也许需要一个昵称更好,或者让昵称为空。可能需要“名字/姓氏”、电子邮件和昵称(可见名称)。如果可见名称为空,请输入名字/姓氏。但提醒用户将使用他们的名字/姓氏,因此他们可能需要输入昵称。(还有GDPR的东西……)