Index: bp-groups/bp-groups-template.php
===================================================================
--- bp-groups/bp-groups-template.php
+++ bp-groups/bp-groups-template.php
@@ -159,9 +159,17 @@
 		if ( 'invites' == $type ) {
 			$this->groups = groups_get_invites_for_user( $user_id, $this->pag_num, $this->pag_page, $exclude );
 		} else if ( 'single-group' == $type ) {
-			$group           = new stdClass;
-			$group->group_id = bp_get_current_group_id();
-			$this->groups    = array( $group );
+			$this->single_group = true;
+
+			$group = new stdClass;
+
+			if ( bp_get_current_group_id() ) {
+				$group->group_id = bp_get_current_group_id();
+			} else {
+				$group->group_id = BP_Groups_Group::get_id_from_slug( $slug );
+			}
+
+			$this->groups = array( $group );
 		} else {
 			$this->groups = groups_get_groups( array(
 				'type'              => $type,
@@ -185,9 +193,13 @@
 			$this->group_count       = (int) $this->groups['total'];
 			$this->groups            = $this->groups['groups'];
 		} else if ( 'single-group' == $type ) {
-			$this->single_group      = true;
-			$this->total_group_count = 1;
-			$this->group_count       = 1;
+			if ( empty( $group->group_id ) ) {
+				$this->total_group_count = 0;
+				$this->group_count       = 0;
+			} else {
+				$this->total_group_count = 1;
+				$this->group_count       = 1;
+			}
 		} else {
 			if ( empty( $max ) || $max >= (int) $this->groups['total'] ) {
 				$this->total_group_count = (int) $this->groups['total'];
@@ -260,8 +272,13 @@
 		$this->in_the_loop = true;
 		$this->group       = $this->next_group();
 
-		if ( $this->single_group )
-			$this->group = groups_get_current_group();
+		if ( $this->single_group ) {
+			if ( groups_get_current_group() ) {
+				$this->group = groups_get_current_group();
+			} else {
+				$this->group = groups_get_group( array( 'group_id' => $this->group->group_id ) );
+			}
+		}
 
 		if ( 0 == $this->current_group ) // loop has just started
 			do_action('group_loop_start');
Index: tests/testcases/groups/template.php
===================================================================
--- tests/testcases/groups/template.php
+++ tests/testcases/groups/template.php
@@ -99,6 +99,33 @@
 	}
 
 	/**
+	 * Test using the 'slug' parameter in bp_has_groups()
+	 *
+	 * Note: The 'slug' parameter currently also requires the 'type' to be set
+	 * to 'single-group'.
+	 *
+	 * @group bp_has_groups
+	 */
+	public function test_bp_has_groups_single_group_with_slug() {
+		$g1 = $this->factory->group->create( array(
+			'name' => 'Test Group',
+			'slug' => 'test-group',
+			'last_activity' => gmdate( 'Y-m-d H:i:s', time() - 100 ),
+		) );
+
+		global $groups_template;
+		bp_has_groups( array(
+			'type' => 'single-group',
+			'slug' => 'test-group',
+		) );
+
+		$ids = wp_parse_id_list( wp_list_pluck( $groups_template->groups, 'group_id' ) );
+		$this->assertEquals( array( $g1 ), $ids );
+
+		$this->assertEquals( 1, $groups_template->group_count );
+	}
+
+	/**
 	 * @group bp_group_has_members
 	 */
 	public function test_bp_group_has_members_vanilla() {
