diff --git src/bp-core/bp-core-buddybar.php src/bp-core/bp-core-buddybar.php
index aba16c5..08c3bca 100644
--- src/bp-core/bp-core-buddybar.php
+++ src/bp-core/bp-core-buddybar.php
@@ -56,7 +56,10 @@ function bp_core_new_nav_item( $args = '' ) {
 	}
 
 	// Then, hook the screen function for the added nav item.
-	bp_core_register_nav_screen_function( $r );
+	$hooked = bp_core_register_nav_screen_function( $r );
+	if ( false === $hooked ){
+		return false;
+	}
 
 	/**
 	 * Fires after adding an item to the main BuddyPress navigation array.
@@ -121,15 +124,6 @@ function bp_core_create_nav_link( $args = '' ) {
 		return false;
 	}
 
-	/**
-	 * If this nav item is hidden for the displayed user, and
-	 * the logged in user is not the displayed user
-	 * looking at their own profile, don't create the nav item.
-	 */
-	if ( empty( $r['show_for_displayed_user'] ) && ! bp_user_has_access() ) {
-		return false;
-	}
-
 	if ( empty( $r['item_css_id'] ) ) {
 		$r['item_css_id'] = $r['slug'];
 	}
@@ -414,8 +408,10 @@ function bp_core_new_subnav_item( $args = '' ) {
 	}
 
 	// Then, hook the screen function for the added subnav item.
-	bp_core_register_subnav_screen_function( $args );
-
+	$hooked = bp_core_register_subnav_screen_function( $args );
+	if ( false === $hooked ) {
+		return false;
+	}
 }
 
 /**
diff --git tests/phpunit/testcases/core/nav/bpCoreNewNavItem.php tests/phpunit/testcases/core/nav/bpCoreNewNavItem.php
index 16b6034..b6f6439 100644
--- tests/phpunit/testcases/core/nav/bpCoreNewNavItem.php
+++ tests/phpunit/testcases/core/nav/bpCoreNewNavItem.php
@@ -124,4 +124,70 @@ class BP_Tests_Core_Nav_BpCoreNewNavItem extends BP_UnitTestCase {
 		$this->assertFalse( $retval );
 	}
 
+	public function test_existence_of_access_protected_user_nav() {
+		$bp_nav = buddypress()->bp_nav;
+
+		$u = $this->factory->user->create();
+		$u2 = $this->factory->user->create();
+		$old_current_user = get_current_user_id();
+		$this->set_current_user( $u2 );
+
+		$this->go_to( bp_core_get_user_domain( $u ) );
+
+		$expected = array(
+			'name'                    => 'Settings',
+			'slug'                    => 'settings',
+			'link'                    => trailingslashit( bp_loggedin_user_domain() . 'settings' ),
+			'css_id'                  => 'settings',
+			'show_for_displayed_user' => false,
+			'position'                => 100,
+			'screen_function'         => 'bp_settings_screen_general',
+			'default_subnav_slug'     => 'general'
+		);
+
+		$this->assertSame( buddypress()->bp_nav['settings'], $expected );
+
+		// Clean up
+		buddypress()->bp_nav = $bp_nav;
+		$this->set_current_user( $old_current_user );
+	}
+
+	public function test_creation_of_access_protected_user_nav() {
+		// The nav item must be added to bp_nav, even if the current user
+		// can't visit that nav item.
+		$bp_nav = buddypress()->bp_nav;
+
+		$u = $this->factory->user->create();
+		$u2 = $this->factory->user->create();
+		$old_current_user = get_current_user_id();
+		$this->set_current_user( $u2 );
+
+		$this->go_to( bp_core_get_user_domain( $u ) );
+
+		bp_core_new_nav_item( array(
+			'name'                    => 'Woof',
+			'slug'                    => 'woof',
+			'show_for_displayed_user' => false,
+			'position'                => 35,
+			'screen_function'         => 'woof_screen_function',
+			'default_subnav_slug'     => 'woof-one'
+		) );
+
+		$expected = array(
+			'name'                    => 'Woof',
+			'slug'                    => 'woof',
+			'link'                    => trailingslashit( bp_loggedin_user_domain() . 'woof' ),
+			'css_id'                  => 'woof',
+			'show_for_displayed_user' => false,
+			'position'                => 35,
+			'screen_function'         => 'woof_screen_function',
+			'default_subnav_slug'     => 'woof-one'
+		);
+
+		$this->assertSame( buddypress()->bp_nav['woof'], $expected );
+
+		// Clean up
+		buddypress()->bp_nav = $bp_nav;
+		$this->set_current_user( $old_current_user );
+	}
 }
