WordPress 禁止用户注册某些用户名

我双手接过晶莹的雪花,想数一数它有几朵花瓣,谁知它到手上就不见了,变成了小水珠。

倡萌之前已经推荐过使用 Restrict Usernames 插件限制用户名使用空格,禁止注册某些用户名,禁止用户名包含某些字段,或者强制用户名必须包含某些字段等。

今天再补充一个简单点的方法,直接将下面的代码添加到主题的 functions.php 即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
 * WordPress 禁止用户注册某些用户名
 * https://www.wpdaxue.com/wordPress-username-restrictions.html
 */
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');

/** * WordPress 禁止用户注册某些用户名 * https://www.wpdaxue.com/wordPress-username-restrictions.html */ 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');

你只需将禁止注册的用户名添加到第 6 行的数组即可。

参考资料:https://sozot.com/wordpress-username-restrictions-without-a-plugin/

PS:经过倡萌测试,本文的代码和 Restrict Usernames 插件可能对某些注册插件或自定义注册表单可能不生效,比如本站目前使用的注册表单就不支持,很郁闷的说!

本文WordPress 禁止用户注册某些用户名到此结束。对于幸运者来说,一生都是短暂的;对于不幸者来说,一夜都是漫长的。小编再次感谢大家对我们的支持!

您可能有感兴趣的文章
WordPress 自定义新用户注册欢迎邮件

WordPress 在用户列表记录用户注册时的IP地址

WordPress 限制用户注册可用的邮箱域名后缀

WordPress 用户注册后自动登录/首次登录跳转到指定页面

WordPress 用户注册后需要管理员审核通过才能登录