diff --git src/bp-members/bp-members-functions.php src/bp-members/bp-members-functions.php
index 462f1d12d..7846718ee 100644
--- src/bp-members/bp-members-functions.php
+++ src/bp-members/bp-members-functions.php
@@ -1556,7 +1556,7 @@ function bp_core_get_illegal_names( $value = '', $oldvalue = '' ) {
 		'settings',
 		'notifications',
 		'register',
-		'activate'
+		'activate',
 	);
 
 	// Core constants.
@@ -1574,26 +1574,38 @@ function bp_core_get_illegal_names( $value = '', $oldvalue = '' ) {
 		'BP_REGISTER_SLUG',
 		'BP_ACTIVATION_SLUG',
 	);
-	foreach( $slug_constants as $constant ) {
+	foreach ( $slug_constants as $constant ) {
 		if ( defined( $constant ) ) {
 			$bp_component_slugs[] = constant( $constant );
 		}
 	}
 
 	/**
-	 * Filters the array of default illegal usernames.
+	 * Filters the array of default illegal usernames from BuddyPress.
 	 *
 	 * @since 1.2.2
 	 *
 	 * @param array $value Merged and unique array of illegal usernames.
 	 */
-	$filtered_illegal_names = apply_filters( 'bp_core_illegal_usernames', array_merge( array( 'www', 'web', 'root', 'admin', 'main', 'invite', 'administrator' ), $bp_component_slugs ) );
+	$filtered_illegal_names = (array) apply_filters( 'bp_core_illegal_usernames', array_merge( array( 'www', 'web', 'root', 'admin', 'main', 'invite', 'administrator' ), $bp_component_slugs ) );
 
-	// Merge the arrays together.
-	$merged_names           = array_merge( (array) $filtered_illegal_names, (array) $db_illegal_names );
+	/**
+	 * Filters the list of illegal usernames from WordPress.
+	 *
+	 * @since 3.0
+	 *
+	 * @param array Array of illegal usernames.
+	 */
+	$wp_filtered_illegal_names = apply_filters( 'illegal_user_logins', array() );
+
+	// First merge BuddyPress illegal names.
+	$bp_merged_names           = array_merge( (array) $filtered_illegal_names, (array) $db_illegal_names );
+
+	// Then merge WordPress and BuddyPress illegal names.
+	$merged_names              = array_merge( (array) $wp_filtered_illegal_names, (array) $bp_merged_names );
 
 	// Remove duplicates.
-	$illegal_names          = array_unique( (array) $merged_names );
+	$illegal_names             = array_unique( (array) $merged_names );
 
 	/**
 	 * Filters the array of default illegal names.
diff --git tests/phpunit/testcases/members/functions.php tests/phpunit/testcases/members/functions.php
index 823df65e8..941927f16 100644
--- tests/phpunit/testcases/members/functions.php
+++ tests/phpunit/testcases/members/functions.php
@@ -637,4 +637,33 @@ class BP_Tests_Members_Functions extends BP_UnitTestCase {
 
 		$wpdb->suppress_errors( $suppress );
 	}
+
+	/**
+	 * @ticket BP7461
+	 *
+	 * Test function before and after adding custom illegal names from WordPress.
+	 */
+	function test_bp_core_get_illegal_names() {
+
+		// Marking sure BP custom illegals are in the array.
+		$this->assertTrue( in_array( 'profile', bp_core_get_illegal_names(), true ) );
+		$this->assertTrue( in_array( 'forums', bp_core_get_illegal_names(), true ) );
+
+		add_filter( 'illegal_user_logins', array( $this, '_illegal_user_logins' ) );
+
+		// Testing fake custom illegal names.
+		$this->assertTrue( in_array( 'testuser', bp_core_get_illegal_names(), true ) );
+		$this->assertTrue( in_array( 'admins', bp_core_get_illegal_names(), true ) );
+		$this->assertFalse( in_array( 'buddypresss', bp_core_get_illegal_names(), true ) );
+
+		// Marking sure BP custom illegals are in the array after including the custom ones.
+		$this->assertTrue( in_array( 'profile', bp_core_get_illegal_names(), true ) );
+		$this->assertTrue( in_array( 'forums', bp_core_get_illegal_names(), true ) );
+
+		remove_filter( 'illegal_user_logins', array( $this, '_illegal_user_logins' ) );
+	}
+
+	function _illegal_user_logins() {
+		return  array( 'testuser', 'admins', 'buddypress' );
+	}
 }
