bp_get_nav_menu_items( string $component = 'members' )

Get the items registered in the primary and secondary BuddyPress navigation menus.

Description

Parameters

$component

(Optional) Component whose nav items are being fetched.

Default value: 'members'

Return

(array) A multidimensional array of all navigation items.

Source

File: bp-core/bp-core-template.php

3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
function bp_get_nav_menu_items( $component = 'members' ) {
    $bp    = buddypress();
    $menus = array();
 
    if ( ! isset( $bp->{$component}->nav ) ) {
        return $menus;
    }
 
    // Get the item nav and build the menus.
    foreach ( $bp->{$component}->nav->get_item_nav() as $nav_menu ) {
        // Get the correct menu link. See https://buddypress.trac.wordpress.org/ticket/4624.
        $link = bp_loggedin_user_domain() ? str_replace( bp_loggedin_user_domain(), bp_displayed_user_domain(), $nav_menu->link ) : trailingslashit( bp_displayed_user_domain() . $nav_menu->link );
 
        // Add this menu.
        $menu         = new stdClass;
        $menu->class  = array( 'menu-parent' );
        $menu->css_id = $nav_menu->css_id;
        $menu->link   = $link;
        $menu->name   = $nav_menu->name;
        $menu->parent = 0;
 
        if ( ! empty( $nav_menu->children ) ) {
            $submenus = array();
 
            foreach( $nav_menu->children as $sub_menu ) {
                $submenu = new stdClass;
                $submenu->class  = array( 'menu-child' );
                $submenu->css_id = $sub_menu->css_id;
                $submenu->link   = $sub_menu->link;
                $submenu->name   = $sub_menu->name;
                $submenu->parent = $nav_menu->slug;
 
                // If we're viewing this item's screen, record that we need to mark its parent menu to be selected.
                if ( bp_is_current_action( $sub_menu->slug ) && bp_is_current_component( $nav_menu->slug ) ) {
                    $menu->class[]    = 'current-menu-parent';
                    $submenu->class[] = 'current-menu-item';
                }
 
                $submenus[] = $submenu;
            }
        }
 
        $menus[] = $menu;
 
        if ( ! empty( $submenus ) ) {
            $menus = array_merge( $menus, $submenus );
        }
    }
 
    /**
     * Filters the items registered in the primary and secondary BuddyPress navigation menus.
     *
     * @since BuddyPress 1.7.0
     *
     * @param array $menus Array of items registered in the primary and secondary BuddyPress navigation.
     */
    return apply_filters( 'bp_get_nav_menu_items', $menus );
}

Changelog

Changelog
Version Description
BuddyPress 1.7.0 Introduced.

Questions?

We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.