The question:
In BuddyPress, when a user clicks on their username, they are presented with a page that contains a menu:
Activity
Profile
Messages
Friends
Groups
Settings
How do I add an item to this menu?
How do display this menu inside my template? (The default page template only displays the main navigation.)
The Solutions:
Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.
Method 1
Here’s an example of adding a menu items pointing to custom templates. If you want to link to existing BP elements, you’ll need to look up the appropriate action. Add this to functions.php
:
// Set up Cutsom BP navigation
function my_setup_nav() {
global $bp;
bp_core_new_nav_item( array(
'name' => __( 'Item One', 'buddypress' ),
'slug' => 'my-item-one',
'position' => 30,
'screen_function' => 'my_item_one_template',
) );
bp_core_new_nav_item( array(
'name' => __( 'Item Two', 'buddypress' ),
'slug' => 'my-item-two',
'position' => 20,
'screen_function' => 'my_item_two_template'
) );
// Change the order of menu items
$bp->bp_nav['messages']['position'] = 100;
// Remove a menu item
$bp->bp_nav['activity'] = false;
// Change name of menu item
$bp->bp_nav['groups']['name'] = ‘community’;
}
add_action( 'bp_setup_nav', 'my_setup_nav' );
// Load a page template for your custom item. You'll need to have an item-one-template.php and item-two-template.php in your theme root.
function my_item_one_template() {
bp_core_load_template( 'item-one-template' );
}
function my_item_two_template() {
bp_core_load_template( 'item-two-template' );
}
Hope that helps! More at this article on Themekraft.
Method 2
Check out the BuddyPress Custom Profile Menu plugin.
You should be able to add tabs just by creating a regular WordPress menu.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0