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個。