diff --git src/bp-members/bp-members-functions.php src/bp-members/bp-members-functions.php
index a1e3cad..1daf5f6 100644
--- src/bp-members/bp-members-functions.php
+++ src/bp-members/bp-members-functions.php
@@ -218,6 +218,11 @@ function bp_core_get_userid( $username = '' ) {
 
 	$user = get_user_by( 'login', $username );
 
+	// On non multisite config, prevents a signup account to be displayed as a member
+	if ( ! empty( $user->user_status ) && 2 == $user->user_status ) {
+		return false;
+	}
+
 	return apply_filters( 'bp_core_get_userid', ! empty( $user->ID ) ? $user->ID : NULL, $username );
 }
 
@@ -236,6 +241,11 @@ function bp_core_get_userid_from_nicename( $user_nicename = '' ) {
 
 	$user = get_user_by( 'slug', $user_nicename );
 
+	// On non multisite config, prevents a signup account to be displayed as a member
+	if ( ! empty( $user->user_status ) && 2 == $user->user_status ) {
+		return false;
+	}
+
 	return apply_filters( 'bp_core_get_userid_from_nicename', ! empty( $user->ID ) ? $user->ID : NULL, $user_nicename );
 }
 
@@ -705,16 +715,16 @@ function bp_core_process_spammer_status( $user_id, $status, $do_wp_cleanup = tru
 			update_user_status( $user_id, 'spam', $is_spam );
 		}
 
-		// Always set single site status
-		$wpdb->update( $wpdb->users, array( 'user_status' => $is_spam ), array( 'ID' => $user_id ) );
-
 		// Call multisite actions in single site mode for good measure
-		if ( !is_multisite() ) {
+		if ( ! is_multisite() && ! $is_admin ) {
 			$wp_action = ( true === $is_spam ) ? 'make_spam_user' : 'make_ham_user';
 			do_action( $wp_action, bp_displayed_user_id() );
 		}
 	}
 
+	// Always set user status
+	$wpdb->update( $wpdb->users, array( 'user_status' => $is_spam ), array( 'ID' => $user_id ) );
+
 	// Hide this user's activity
 	if ( ( true === $is_spam ) && bp_is_active( 'activity' ) ) {
 		bp_activity_hide_user_activity( $user_id );
diff --git tests/phpunit/testcases/core/functions.php tests/phpunit/testcases/core/functions.php
index a749eb3..1693e2b 100644
--- tests/phpunit/testcases/core/functions.php
+++ tests/phpunit/testcases/core/functions.php
@@ -614,4 +614,94 @@ class BP_Tests_Core_Functions extends BP_UnitTestCase {
 			date_default_timezone_set( $tz_backup );
 		}
 	}
+
+	/**
+	 * @group bp_core_process_spammer_status
+	 */
+	public function test_bp_core_process_spammer_status() {
+		if ( is_multisite() ) {
+			return;
+		}
+
+		$bp = buddypress();
+		$displayed_user = $bp->displayed_user;
+
+		$u1 = $this->factory->user->create();
+		$bp->displayed_user->id = $u1;
+
+		// Spam the user
+		bp_core_process_spammer_status( $u1, 'spam' );
+
+		$this->assertTrue( bp_is_user_spammer( $u1 ) );
+
+		// Unspam the user
+		bp_core_process_spammer_status( $u1, 'ham' );
+
+		clean_user_cache( $u1 );
+
+		$this->assertFalse( bp_is_user_spammer( $u1 ) );
+
+		// Reset displayed user
+		$bp->displayed_user = $displayed_user;
+	}
+
+	/**
+	 * @group bp_core_process_spammer_status
+	 */
+	public function test_bp_core_process_spammer_status_ms_bulk_spam() {
+		if ( ! is_multisite() ) {
+			return;
+		}
+
+		$bp = buddypress();
+		$displayed_user = $bp->displayed_user;
+
+		$u1 = $this->factory->user->create();
+		$bp->displayed_user->id = $u1;
+
+		// Bulk spam in network admin uses update_user_status
+		update_user_status( $u1, 'spam', '1' );
+
+		$this->assertTrue( bp_is_user_spammer( $u1 ) );
+
+		// Unspam the user
+		bp_core_process_spammer_status( $u1, 'ham' );
+
+		clean_user_cache( $u1 );
+
+		$this->assertFalse( bp_is_user_spammer( $u1 ) );
+
+		// Reset displayed user
+		$bp->displayed_user = $displayed_user;
+	}
+
+	/**
+	 * @group bp_core_process_spammer_status
+	 */
+	public function test_bp_core_process_spammer_status_ms_bulk_ham() {
+		if ( ! is_multisite() ) {
+			return;
+		}
+
+		$bp = buddypress();
+		$displayed_user = $bp->displayed_user;
+
+		$u1 = $this->factory->user->create();
+		$bp->displayed_user->id = $u1;
+
+		// Spam the user
+		bp_core_process_spammer_status( $u1, 'spam' );
+
+		$this->assertTrue( bp_is_user_spammer( $u1 ) );
+
+		// Bulk unspam in network admin uses update_user_status
+		update_user_status( $u1, 'spam', '0' );
+
+		clean_user_cache( $u1 );
+
+		$this->assertFalse( bp_is_user_spammer( $u1 ) );
+
+		// Reset displayed user
+		$bp->displayed_user = $displayed_user;
+	}
 }
