Index: src/bp-members/bp-members-template.php
===================================================================
--- src/bp-members/bp-members-template.php
+++ src/bp-members/bp-members-template.php
@@ -2509,20 +2509,7 @@
 	function bp_get_signup_allowed() {
 		$bp = buddypress();
 
-		$signup_allowed = false;
-
-		if ( is_multisite() ) {
-			$registration = bp_core_get_root_option( 'registration' );
-
-			if ( in_array( $registration, array( 'all', 'user' ) ) ) {
-				$signup_allowed = true;
-			}
-
-		} else {
-			if ( bp_get_option( 'users_can_register') ) {
-				$signup_allowed = true;
-			}
-		}
+		$signup_allowed = (bool) bp_get_option( 'users_can_register' );
 
 		/**
 		 * Filters whether or not new signups are allowed.
Index: src/bp-members/classes/class-bp-members-admin.php
===================================================================
--- src/bp-members/classes/class-bp-members-admin.php
+++ src/bp-members/classes/class-bp-members-admin.php
@@ -214,6 +214,10 @@
 				add_filter( "views_{$user_screen}", array( $this, 'signup_filter_view'    ), 10, 1 );
 				add_filter( 'set-screen-option',    array( $this, 'signup_screen_options' ), 10, 3 );
 			}
+
+			// Registration is turned on.
+			add_action( 'update_site_option_registration',  array( $this, 'multisite_registration_on' ),   10, 2 );
+			add_action( 'update_option_users_can_register', array( $this, 'single_site_registration_on' ), 10, 2 );
 		}
 
 		/** Users List - Members Types ***************************************
@@ -235,6 +239,37 @@
 	}
 
 	/**
+	 * Create registration pages when multisite user registration is turned on.
+	 *
+	 * @since 2.7.0
+	 *
+	 * @param string $option_name Current option name; value is always 'registration'.
+	 * @param string $value
+	 */
+	public function multisite_registration_on( $option_name, $value ) {
+		if ( 'user' === $value || 'all' === $value ) {
+			// Uh what?
+			bp_core_add_page_mappings( array( 'pizza' ) );
+		}
+	}
+
+	/**
+	 * Create registration pages when single site registration is turned on.
+	 *
+	 * @since 2.7.0
+	 *
+	 * @param string $old_value
+	 * @param string $value
+	 */
+	public function single_site_registration_on( $old_value, $value ) {
+		// Single site.
+		if ( ! is_multisite() && ! empty( $value ) ) {
+			// Uh what?
+			bp_core_add_page_mappings( array( 'pizza' ) );
+		}
+	}
+
+	/**
 	 * Get the user ID.
 	 *
 	 * Look for $_GET['user_id']. If anything else, force the user ID to the
Index: tests/phpunit/testcases/core/functions/bpCoreGetDirectoryPageIds.php
===================================================================
--- tests/phpunit/testcases/core/functions/bpCoreGetDirectoryPageIds.php
+++ tests/phpunit/testcases/core/functions/bpCoreGetDirectoryPageIds.php
@@ -285,4 +285,58 @@
 		// Now verify that our BP activity page was not wiped out
 		$this->assertNotEmpty( $dir_pages->activity );
 	}
+
+	/**
+	 * @ticket BP7193
+	 */
+	public function test_bp_core_get_directory_pages_autocreate_register_pages_single_site() {
+		if ( is_multisite() ) {
+			return;
+		}
+
+		// Emulate being in the admin area.
+		if ( ! class_exists( 'BP_Members_Admin', false ) ) {
+			require BP_PLUGIN_DIR . 'bp-members/classes/class-bp-members-admin.php';
+		}
+		$admin = new BP_Members_Admin;
+		add_action( 'update_option_users_can_register', array( $admin, 'single_site_registration_on' ), 10, 2 );
+
+		// Emulate turning registration on.
+		update_option( 'users_can_register', 1 );
+
+		// Now check directory pages.
+		$pages = bp_core_get_directory_pages();
+
+		$this->assertNotEmpty( $pages->register );
+		$this->assertNotEmpty( $pages->activate );
+
+		remove_action( 'update_option_users_can_register', array( $admin, 'single_site_registration_on' ), 10, 2 );
+	}
+
+	/**
+	 * @ticket BP7193
+	 */
+	public function test_bp_core_get_directory_pages_autocreate_register_pages_multisite() {
+		if ( ! is_multisite() ) {
+			return;
+		}
+
+		// Emulate being in the network admin area.
+		if ( ! class_exists( 'BP_Members_Admin', false ) ) {
+			require BP_PLUGIN_DIR . 'bp-members/classes/class-bp-members-admin.php';
+		}
+		$admin = new BP_Members_Admin;
+		add_action( 'update_site_option_registration', array( $admin, 'multisite_registration_on' ), 10, 2 );
+
+		// Emulate turning registration on.
+		update_site_option( 'registration', 'user' );
+
+		// Now check directory pages.
+		$pages = bp_core_get_directory_pages();
+
+		$this->assertNotEmpty( $pages->register );
+		$this->assertNotEmpty( $pages->activate );
+
+		remove_action( 'update_site_option_registration', array( $admin, 'multisite_registration_on' ), 10, 2 );
+	}
 }
