bp_setup_nav_menu_item( WP_Post $menu_item )
Add BuddyPress-specific items to the wp_nav_menu.
Description
Parameters
- $menu_item
-
(Required) The menu item.
Return
(WP_Post) The modified WP_Post object.
Source
File: bp-core/bp-core-filters.php
function bp_setup_nav_menu_item( $menu_item ) { if ( is_admin() ) { return $menu_item; } // Prevent a notice error when using the customizer. $menu_classes = $menu_item->classes; if ( is_array( $menu_classes ) ) { $menu_classes = implode( ' ', $menu_item->classes); } // We use information stored in the CSS class to determine what kind of // menu item this is, and how it should be treated. preg_match( '/\sbp-(.*)-nav/', $menu_classes, $matches ); // If this isn't a BP menu item, we can stop here. if ( empty( $matches[1] ) ) { return $menu_item; } switch ( $matches[1] ) { case 'login' : if ( is_user_logged_in() ) { $menu_item->_invalid = true; } else { $menu_item->url = wp_login_url( bp_get_requested_url() ); } break; case 'logout' : if ( ! is_user_logged_in() ) { $menu_item->_invalid = true; } else { $menu_item->url = wp_logout_url( bp_get_requested_url() ); } break; // Don't show the Register link to logged-in users. case 'register' : if ( is_user_logged_in() ) { $menu_item->_invalid = true; } break; // All other BP nav items are specific to the logged-in user, // and so are not relevant to logged-out users. default: if ( is_user_logged_in() ) { $menu_item->url = bp_nav_menu_get_item_url( $matches[1] ); } else { $menu_item->_invalid = true; } break; } // If component is deactivated, make sure menu item doesn't render. if ( empty( $menu_item->url ) ) { $menu_item->_invalid = true; // Highlight the current page. } else { $current = bp_get_requested_url(); if ( strpos( $current, $menu_item->url ) !== false ) { if ( is_array( $menu_item->classes ) ) { $menu_item->classes[] = 'current_page_item'; $menu_item->classes[] = 'current-menu-item'; } else { $menu_item->classes = array( 'current_page_item', 'current-menu-item' ); } } } return $menu_item; }
Changelog
Version | Description |
---|---|
BuddyPress 1.9.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.