How to Add, Remove, and Change the Order Of BuddyPress Component Menu

Today I needed to change three things in a BuddyPress installation:

  1. Change the title of “Groups” to “My Conversations” in the BuddyPress component menu.
  2. Remove the “Forums” menu item from the BuddyPress component menu.
  3. Change the order of the BuddyPress component menu such that the “Messages” link is in a different place.

To accomplish these three things, I added the following to my theme’s functions.php file:

// Setup the navigation
// Props to for helping me figure this out
function my_setup_nav() {
      global $bp;
      // Change the order of menu items
      $bp->bp_nav['messages']['position'] = 100;
      // Remove a menu item
      $bp->bp_nav['conversations'] = false;
      // Change name of menu item
      $bp->bp_nav['communities']['name'] = 'My Conversations';
add_action( 'bp_setup_nav', 'my_setup_nav', 1000 );

Pretty nifty, eh?

By the way, if you want to see all of your options for editing the components menu, just throw the following into functions.php:

function bp_dump() {
    global $bp;
    foreach ( (array)$bp as $key => $value ) {
        echo '
'; echo '' . $key . ':
;'; print_r( $value ); echo '
'; } die; }

(Thanks ThemeKraft!)

Posted in ,

Toby Cryns

Toby Cryns is a freelance CTO, expert WordPress consultant, and teacher.

He offers free advice to improve your freelance biz.

He also publishes small droppings every now and then to and

Follow Toby's contributions on Github and


  1. Rick Roberts on February 7, 2012 at 10:22 pm

    Thank you so much for posting this solution. It worked almost perfectly. There is a partial tab left over on the left side, and I can’t figure out where that is coming from. Picture here:

    • toby on February 16, 2012 at 3:40 am

      I don’t know… Let me know if you solve the problem, so I can post the solution here.

  2. mecanographik on March 2, 2012 at 9:47 am

    Hey, i have a found a way to hide the partial tab with just a bit of css in your bp child theme stylesheet :

    div.item-list-tabs ul #-personal-li{display:none;}

    i’m sure there is a way to do it with a hook on the bp_get_displayed_user_nav function, but i couldn’t figure it out !