在百度知道有一道友提问:
《WordPress中文汉字用户名不能注册怎么办?》
http://zhidao.baidu.com/question/496821217188051324.html
wordpress的注册入口为 /wp-login.php,然后经过 register_new_user(), wp_create_user(), wp_insert_user()等一系列函数,其中对用户名重复进行了验证与过滤,包括sanitize_user(),validate_username().
wordpress注册过程中,对用户名默认进行了严格过滤,即sanitize_user( $username, true );
wordpress自2.0.1版起,就针对sanitize_user提供了hooks给开发者,所以一切皆有可能。
我作出如下回答:
add_filter( 'sanitize_user', 'rebuild_sanitize_user', 999, 3); function rebuild_sanitize_user( $username, $raw_username, $strict ){ return $raw_username; }
将上段代码放在当前theme的functions.php文件中,再至后台中文注册试一试,效果立显。
PS: 该段代码只是简易测试,应参考sanitize_user进行必要的安全过滤。
在WordPress Development Stack Exchange上,Rarst的回答很精彩。
add_filter('sanitize_user', 'non_strict_login', 10, 3); // link: http://wordpress.stackexchange.com/questions/7328/allowing-non-latin-characters-in-registration function non_strict_login( $username, $raw_username, $strict ) { if( !$strict ) return $username; return sanitize_user(stripslashes($raw_username), false); }
不过Rarst没测试,而且同样提出了这种循环是否合理的疑虑。所以仅作为参考。
找到出 wordpress 博客地址 找不到 z-blog的博客地址