在注册时过滤用户名字段中的亵渎和不想要的词

时间:2013-11-26 作者:Christine Cooper

如何在用户名字段中添加过滤器,以阻止新用户使用不需要的词进行注册,例如administrator 还是一般的亵渎?

理想情况下,如果我可以添加一个大的单词列表,这些单词会被阻止,并可以添加星号(*)作为通配符,如genitals*.

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

根据安装情况,您可以使用两种截然不同的挂钩:

  • wpmu_validate_user_signup 对于多站点和registration_errors 对于单个站点user_name_is_forbidden() 满足您的需求。对匹配项使用正则表达式。

    // multi-site
    add_filter( \'wpmu_validate_user_signup\', function( $result )
    {
        // there is already an error
        if ( $result[\'errors\']->get_error_message(\'user_name\') )
            return $result;
    
        if ( user_name_is_forbidden( $result[\'user_name\'] ) )
            $result[\'errors\']->add(\'user_name\',  __( \'That username is not allowed.\' ) );
    
        return $result;
    });
    
    //single-site
    add_filter( \'registration_errors\', function( $errors, $name )
    {
        if ( user_name_is_forbidden( $name ) )
            $errors->add(\'user_name\',  __( \'That username is not allowed.\' ) );
        return $errors;
    }, 10, 2);
    
    
    function user_name_is_forbidden( $name )
    {
        // If you need the character \'~\', write it as \'\\~\'.
        $forbidden = array(
            \'admin.*\',
            \'genitals.*\',
            \'system.*\'
        );
    
        return (bool) preg_match( \'~\' . join( \'|\', $forbidden ) . \'~i\', $name );
    }
    

结束

相关推荐

Pre-populate Username Field

我有一个奇怪的要求,但希望它是可行的。我想能够有几个标志,为我的客户,在我的网站上。根据他们单击的徽标,会将他们带到已输入用户名的登录页面。因此,如果他们单击“Bob\'s Grill”徽标,就会进入登录页面,并输入“Bob\'s Grill”用户名。有没有办法做到这一点?谢谢