diff --git a/src/bp-core/bp-core-template-loader.php b/src/bp-core/bp-core-template-loader.php
index 89ee7b7..5df0ded 100644
--- a/src/bp-core/bp-core-template-loader.php
+++ b/src/bp-core/bp-core-template-loader.php
@@ -442,14 +442,54 @@ function bp_load_theme_functions() {
  * @return array Array of possible root level wrapper template files.
  */
 function bp_get_theme_compat_templates() {
-	$templates = array(
+	$page_id       = 0;
+	$page_template = array();
+
+	// Get the WordPress Page ID for the current view.
+	foreach ( (array) buddypress()->pages as $component => $bp_page ) {
+
+		// Handles the majority of components.
+		if ( bp_is_current_component( $component ) ) {
+			$page_id = (int) $bp_page->id;
+		}
+
+		// Stop if not on a user page.
+		if ( ! bp_is_user() && ! empty( $page_id ) ) {
+			break;
+		}
+
+		// The Members component requires an explicit check due to overlapping components.
+		if ( bp_is_user() && 'members' === $component ) {
+			$page_id = (int) $bp_page->id;
+			break;
+		}
+	}
+
+	if ( $page_id ) {
+		// If the WP Page has a Page Template set, let's add it to the stack.
+		$template_file = get_page_template_slug( $page_id );
+
+		if ( $template_file ) {
+			$page_template = array( $template_file );
+		}
+	}
+
+	$primary_templates = array(
 		'plugin-buddypress.php',
 		'buddypress.php',
 		'community.php',
 		'generic.php',
+	);
+
+	$fallback_templates = array(
 		'page.php',
 		'single.php',
 		'index.php'
 	);
-	return bp_get_query_template( 'buddypress', $templates );
+
+	return bp_get_query_template( 'buddypress', array_merge(
+		$primary_templates,
+		$page_template,
+		$fallback_templates
+	) );
 }
