不管在任何網站,用戶注冊時都有一個屏蔽非法關鍵詞,就是禁止注冊某些用戶名,原因是因為防止用戶使用一些特定的用戶名,例如管理員、官方等用戶名,還有就是那些攻擊性的詞語了。
加網站添加了屏蔽非法關鍵詞,讓那些用戶名不被注冊,對網站的安全性也是一個提高。
下面這段代碼能夠完美解決WordPress禁止用戶注冊某些用戶名。
function sozot_validate_username($valid, $username) {$forbidden = array('directory', 'domain', 'download', 'downloads', 'edit', 'editor', 'email', 'ecommerce', 'forum', 'forums', 'favorite', 'feedback', 'follow', 'files', 'gadget', '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');
將$forbidden = array里的單詞換成你想禁止的詞即可,然后把代碼添加到主題的functions.php文件即可。
不過上面代碼有可能和某些插件不兼容,這就要看自己如何取舍了。