diff --git a/src/wp-admin/includes/user.php b/src/wp-admin/includes/user.php
index 3d37bdf579..005266860a 100644
--- a/src/wp-admin/includes/user.php
+++ b/src/wp-admin/includes/user.php
@@ -146,7 +146,7 @@ function edit_user( $user_id = 0 ) {
$illegal_logins = (array) apply_filters( 'illegal_user_logins', array() );
if ( in_array( strtolower( $user->user_login ), array_map( 'strtolower', $illegal_logins ) ) ) {
- $errors->add( 'illegal_user_login', __( 'ERROR: Sorry, that username is not allowed.' ) );
+ $errors->add( 'invalid_username', __( 'ERROR: Sorry, that username is not allowed.' ) );
}
/* checking email address */
diff --git a/src/wp-includes/user.php b/src/wp-includes/user.php
index 0abe79e7d2..45da472f12 100644
--- a/src/wp-includes/user.php
+++ b/src/wp-includes/user.php
@@ -1331,7 +1331,7 @@ function wp_insert_user( $userdata ) {
$illegal_logins = (array) apply_filters( 'illegal_user_logins', array() );
if ( in_array( strtolower( $user_login ), array_map( 'strtolower', $illegal_logins ) ) ) {
- return new WP_Error( 'illegal_user_login', __( 'Sorry, that username is not allowed.' ) );
+ return new WP_Error( 'invalid_username', __( 'Sorry, that username is not allowed.' ) );
}
/*
@@ -2124,6 +2124,13 @@ function register_new_user( $user_login, $user_email ) {
$sanitized_user_login = '';
} elseif ( username_exists( $sanitized_user_login ) ) {
$errors->add( 'username_exists', __( 'ERROR: This username is already registered. Please choose another one.' ) );
+
+ } else {
+ /** This filter is documented in wp-includes/user.php */
+ $illegal_user_logins = array_map( 'strtolower', (array) apply_filters( 'illegal_user_logins', array() ) );
+ if ( in_array( strtolower( $sanitized_user_login ), $illegal_user_logins ) ) {
+ $errors->add( 'invalid_username', __( 'ERROR: Sorry, that username is not allowed.' ) );
+ }
}
// Check the email address
diff --git a/tests/phpunit/tests/user.php b/tests/phpunit/tests/user.php
index 3644ffcb79..c55fa6d347 100644
--- a/tests/phpunit/tests/user.php
+++ b/tests/phpunit/tests/user.php
@@ -622,7 +622,7 @@ class Tests_User extends WP_UnitTestCase {
$response = wp_insert_user( $user_data );
$this->assertInstanceOf( 'WP_Error', $response );
- $this->assertEquals( 'illegal_user_login', $response->get_error_code() );
+ $this->assertEquals( 'invalid_username', $response->get_error_code() );
remove_filter( 'illegal_user_logins', array( $this, '_illegal_user_logins' ) );
@@ -631,6 +631,26 @@ class Tests_User extends WP_UnitTestCase {
$this->assertInstanceOf( 'WP_User', $user );
}
+ /**
+ * @ticket 27317
+ * @dataProvider _illegal_user_logins_data
+ */
+ function test_illegal_user_logins_single_wp_create_user( $user_login ) {
+ $user_email = 'testuser-' . $user_login . '@example.com';
+
+ add_filter( 'illegal_user_logins', array( $this, '_illegal_user_logins' ) );
+
+ $response = register_new_user( $user_login, $user_email );
+ $this->assertInstanceOf( 'WP_Error', $response );
+ $this->assertEquals( 'invalid_username', $response->get_error_code() );
+
+ remove_filter( 'illegal_user_logins', array( $this, '_illegal_user_logins' ) );
+
+ $response = register_new_user( $user_login, $user_email );
+ $user = get_user_by( 'id', $response );
+ $this->assertInstanceOf( 'WP_User', $user );
+ }
+
/**
* @ticket 27317
*/
@@ -658,10 +678,15 @@ class Tests_User extends WP_UnitTestCase {
}
function _illegal_user_logins_data() {
- return array(
- array( 'testuser' ),
- array( 'TestUser' ),
+ $data = array(
+ array( 'testuser' )
);
+
+ // Multisite doesn't allow mixed case logins ever
+ if ( ! is_multisite() ) {
+ $data[] = array( 'TestUser' );
+ }
+ return $data;
}
function _illegal_user_logins() {