如果用户名包含@符号,则使其无效

时间:2013-01-01 作者:PrivateUser

我想让用户使用用户名或电子邮件登录。

找到电子邮件的唯一方法是检测@ symbol 使用strpos.

但是WordPress允许@ symbol 在里面username too.

如果用户名中包含@符号,有人能帮我使其无效吗。。

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

在多站点安装中\'wpmu_validate_user_signup\':

add_filter( \'wpmu_validate_user_signup\', \'wpse_77904_mu_no_at_in_username\' );

function wpse_77904_mu_no_at_in_username( $user )
{
    if ( FALSE !== strpos( $user[\'user_name\'], \'@\' ) )
        $user[\'errors\']->add(\'user_name\',  __( \'That username is not allowed.\' ) );

    return $user;
}
在单个站点上\'validate_username\':

add_filter( \'validate_username\', \'wpse_77904_no_at_in_username\', 10, 2 );

function wpse_77904_no_at_in_username( $valid, $username )
{
    if ( FALSE !== strpos( $username, \'@\' ) )
        return FALSE;

    return $valid;
}
警告:两者均未测试。:)

结束

相关推荐

更新USER_LOGIN以更改用户名

我正在尝试更新user_login 在wp_users 表,以强制在提交前端编辑配置文件表单时将用户的用户名更新到其电子邮件地址。我知道WordPress禁止通过wp_update_user 所以我尝试将SQL与wpdb函数一起使用。以下是我所拥有的,但它不起作用:(global $wpdb; $tablename = $wpdb->prefix . \"users\"; $sql = $wpdb->prepare( \"UPDATE \".$tablename.\" SET