diff --git src/bp-core/classes/class-bp-walker-nav-menu.php src/bp-core/classes/class-bp-walker-nav-menu.php
index 8ba7f9c12..b5c11e11d 100644
--- src/bp-core/classes/class-bp-walker-nav-menu.php
+++ src/bp-core/classes/class-bp-walker-nav-menu.php
@@ -11,12 +11,12 @@
 defined( 'ABSPATH' ) || exit;
 
 /**
- * Create HTML list of BP nav items.
+ * Compatibility Class to make BP_Walker_Nav_Menu::walk() compatible
+ * from PHP 5.3 to 5.6 and up.
  *
- * @since 1.7.0
+ * @since 5.1.0
  */
-class BP_Walker_Nav_Menu extends Walker_Nav_Menu {
-
+class BP_Walker_Nav_Menu_Compat extends Walker_Nav_Menu {
 	/**
 	 * Description of fields indexes for building markup.
 	 *
@@ -47,16 +47,16 @@ class BP_Walker_Nav_Menu extends Walker_Nav_Menu {
 	 * those have ID/post_parent.
 	 *
 	 * @since 1.7.0
-	 * @since 6.0.0 Formalized the existing `...$args` parameter by adding it
-	 *              to the function signature to match WordPress 5.3.
+	 * @since 5.1.0 Method was renamed from `walk` to `do_walk` to ensure PHP 5.3 compatibility
+	 *
 	 * @see Walker::walk()
 	 *
 	 * @param array $elements  See {@link Walker::walk()}.
 	 * @param int   $max_depth See {@link Walker::walk()}.
-	 * @param mixed ...$args   Optional additional arguments.
+	 * @param array $args      Optional additional arguments.
 	 * @return string See {@link Walker::walk()}.
 	 */
-	public function walk( $elements, $max_depth, ...$args ) {
+	public function do_walk( $elements, $max_depth, $args = array() ) {
 		$output = '';
 
 		if ( $max_depth < -1 ) // Invalid parameter.
@@ -212,3 +212,9 @@ class BP_Walker_Nav_Menu extends Walker_Nav_Menu {
 		$output .= apply_filters( 'bp_walker_nav_menu_start_el', $item_output, $item, $depth, $args );
 	}
 }
+
+if ( PHP_VERSION_ID >= 50600 ) {
+	require_once dirname( __DIR__ ) . '/compat/php56/class-bp-compat-walker-nav-menu.php';
+} else {
+	require_once dirname( __DIR__ ) . '/compat/php53/class-bp-compat-walker-nav-menu.php';
+}
diff --git src/bp-core/compat/php53/class-bp-compat-walker-nav-menu.php src/bp-core/compat/php53/class-bp-compat-walker-nav-menu.php
new file mode 100644
index 000000000..7bfc6f9c8
--- /dev/null
+++ src/bp-core/compat/php53/class-bp-compat-walker-nav-menu.php
@@ -0,0 +1,32 @@
+<?php
+/**
+ * Walker_Nav_Menu Compat for PHP 5.3 and UP.
+ *
+ * @package BuddyPress
+ * @subpackage Core
+ * @since 5.1.0
+ */
+
+ // Exit if accessed directly.
+defined( 'ABSPATH' ) || exit;
+
+/**
+ * Create HTML list of BP nav items.
+ *
+ * @since 1.7.0
+ */
+class BP_Walker_Nav_Menu extends BP_Walker_Nav_Menu_Compat {
+	/**
+	 * Compat method to extend Walker_Nav_Menu::walk() in PHP < 5.6.
+	 *
+	 * @since 5.1.0
+	 *
+	 * @param array $elements  See {@link Walker::walk()}.
+	 * @param int   $max_depth See {@link Walker::walk()}.
+	 */
+	public function walk( $elements, $max_depth ) {
+		$args = array_slice( func_get_args(), 2 );
+
+		return $this->do_walk( $elements, $max_depth, $args );
+	}
+}
diff --git src/bp-core/compat/php56/class-bp-compat-walker-nav-menu.php src/bp-core/compat/php56/class-bp-compat-walker-nav-menu.php
new file mode 100644
index 000000000..0e35f37cc
--- /dev/null
+++ src/bp-core/compat/php56/class-bp-compat-walker-nav-menu.php
@@ -0,0 +1,31 @@
+<?php
+/**
+ * Walker_Nav_Menu Compat for PHP 5.6 and UP.
+ *
+ * @package BuddyPress
+ * @subpackage Core
+ * @since 5.1.0
+ */
+
+ // Exit if accessed directly.
+defined( 'ABSPATH' ) || exit;
+
+/**
+ * Create HTML list of BP nav items.
+ *
+ * @since 1.7.0
+ */
+class BP_Walker_Nav_Menu extends BP_Walker_Nav_Menu_Compat {
+	/**
+	 * Compat method to extend Walker_Nav_Menu::walk() in PHP > 5.6.
+	 *
+	 * @since 5.1.0
+	 *
+	 * @param array $elements  See {@link Walker::walk()}.
+	 * @param int   $max_depth See {@link Walker::walk()}.
+	 * @param mixed ...$args   See {@link Walker::walk()}.
+	 */
+	public function walk( $elements, $max_depth, ...$args ) { // phpcs:ignore PHPCompatibility.LanguageConstructs.NewLanguageConstructs.t_ellipsisFound
+		return $this->do_walk( $elements, $max_depth, $args );
+	}
+}
diff --git tests/phpunit/testcases/core/class-bp-walker-nav-menu.php tests/phpunit/testcases/core/class-bp-walker-nav-menu.php
new file mode 100644
index 000000000..75f4866c2
--- /dev/null
+++ tests/phpunit/testcases/core/class-bp-walker-nav-menu.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @group core
+ * @group BP_Walker_Nav_Menu
+ */
+class BP_Tests_Walker_Nav_Menu extends BP_UnitTestCase {
+	protected $reset_user_id;
+	protected $user_id;
+
+	public function setUp() {
+		parent::setUp();
+
+		$this->reset_user_id = get_current_user_id();
+
+		$this->user_id = self::factory()->user->create();
+		$this->set_current_user( $this->user_id );
+	}
+
+	public function tearDown() {
+		parent::tearDown();
+		$this->set_current_user( $this->reset_user_id );
+	}
+
+	public function test_walk_method() {
+		$expected = array( 'activity-class', 'xprofile-class' );
+		$items    = array(
+			(object) array(
+				'component_id' => 'activity',
+				'name'         => 'Activity',
+				'slug'         => 'activity',
+				'link'         => trailingslashit( bp_loggedin_user_domain() . bp_get_activity_slug() ),
+				'css_id'       => 'activity',
+				'class'        => array( $expected[0] ),
+			),
+			(object) array(
+				'component_id' => 'xprofile',
+				'name'         => 'Profile',
+				'slug'         => 'profile',
+				'link'         => trailingslashit( bp_loggedin_user_domain() . bp_get_profile_slug() ),
+				'css_id'       => 'xprofile',
+				'class'        => array( $expected[1] ),
+			),
+		);
+		$args = (object) array( 'before' => '', 'link_before' => '', 'after' => '', 'link_after' => '' );
+		$walker = new BP_Walker_Nav_Menu();
+		$output = $walker->walk( $items, -1, $args );
+		preg_match_all( '/class=["\']?([^"\']*)["\' ]/is', $output, $classes );
+		$this->assertSame( $classes[1], $expected );
+	}
+}
