1.先说通过修改代码如何实现:
1.1 找到你的wordpress网站目录下的主题文件夹里(一般为/wp-content/themes/主题名)的functions.php,在其中添加代码:
[code]/**
* 限制注册用户名的字符长度以及禁止部分词语注册
* about user’s function.
*/
function sozot_validate_username($valid, $username) {
$forbidden = array(‘directory’, ‘domain’, ‘download’, ‘downloads’, ‘edit’, ‘editor’, ’email’, ‘ecommerce’, ‘forum’, ‘forums’, ‘favorite’, ‘feedback’, ‘follow’, ‘files’, ‘gadget’, ‘gadgets’, ‘games’, ‘guest’, ‘group’, ‘groups’, ‘homepage’, ‘hosting’, ‘hostname’, ‘httpd’, ‘https’, ‘information’, ‘image’, ‘images’, ‘index’, ‘invite’, ‘intranet’, ‘indice’, ‘iphone’, ‘javascript’, ‘knowledgebase’, ‘lists’,’websites’, ‘webmaster’, ‘workshop’, ‘yourname’, ‘yourusername’, ‘yoursite’, ‘yourdomain’);
$pages = get_pages();
foreach ($pages as $page) {
$forbidden[] = $page->post_name;
}
if(!$valid || is_user_logged_in() && current_user_can(‘create_users’) ) return $valid;
$username = strtolower($username);
if ($valid && strpos( $username, ‘ ‘ ) !== false) $valid=false;
if ($valid && in_array( $username, $forbidden )) $valid=false;
if ($valid && strlen($username) < 5) $valid=false; return $valid; } add_filter(‘validate_username’, ‘sozot_validate_username’, 10, 2); function sozot_registration_errors($errors) { if ( isset( $errors->errors[‘invalid_username’] ) )
$errors->errors[‘invalid_username’][0] = __( ‘错误:该用户名不允许注册!’, ‘sozot’ );
return $errors;
}
add_filter(‘registration_errors’, ‘sozot_registration_errors’);\[/code]
其中,“$valid && strlen($username) < 5”中的“5”即是允许注册的用户名字符的最小长度,可自己修改。“$forbidden = array”中即为不允许注册的字符,可自己修改及添加。
1.2 通过上面的修改,在网站目录 /wp-includes中找到formatting.php文件,打开并找到:
function sanitize_user( $username, $strict = false ) {
把 $strict 强制指定为 false,即在 sanitize_user 这行函数的下一行添加如下代码
[code]$strict = false;[/code]
或者注释掉其中的这行:
$username = preg_replace( ‘|[^a-z0-9 _.\-@]|i’, ”, $username );
即将“$username = preg_replace( ‘|[^a-z0-9 _.\-@]|i’, ”, $username );”一行替换为:
[code]//$username = preg_replace( ‘|[^a-z0-9 _.\-@]|i’, ”, $username );[/code]
2.如何通过插件实现
wordpress后台搜索插件“DX Login Register”,安装。
装完本插件去设定即可,还有更多拓展功能。
但是该插件依然不支持中文注册,那么此时按照上面的步骤“1.2”修改代码即可支持中文注册。
P.S.
假设允许注册用户名字符长度为L,允许的中文字数(用N表示)不是L/2,而是:
N=(L-1)/2.
即如果允许注册用户名5个英文字符长度,那么允许汉字字数对应为2个,如果允许注册用户名4个英文字符长度,那么允许汉字字数对应为1.5个(可以注册一个汉字+一个英文字母的用户名),如果允许注册用户名3个英文字符长度,那么允许汉字字数对应为1个。