bp_nav_menu_get_loggedin_pages()
Create fake “post” objects for BP’s logged-in nav menu for use in the WordPress “Menus” settings page.
Description
WordPress nav menus work by representing post or tax term data as a custom post type, which is then used to populate the checkboxes that appear on Dashboard > Appearance > Menu as well as the menu as rendered on the front end. Most of the items in the BuddyPress set of nav items are neither posts nor tax terms, so we fake a post-like object so as to be compatible with the menu.
This technique also allows us to generate links dynamically, so that, for example, "My Profile" will always point to the URL of the profile of the logged-in user.
Return
(mixed) A URL or an array of dummy pages.
Source
File: bp-core/bp-core-functions.php
2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 | function bp_nav_menu_get_loggedin_pages() { // Try to catch the cached version first. if ( ! empty ( buddypress()->wp_nav_menu_items->loggedin ) ) { return buddypress()->wp_nav_menu_items->loggedin; } // Pull up a list of items registered in BP's primary nav for the member. $bp_menu_items = buddypress()->members->nav->get_primary(); // Some BP nav menu items will not be represented in bp_nav, because // they are not real BP components. We add them manually here. $bp_menu_items [] = array ( 'name' => __( 'Log Out' , 'buddyboss' ), 'slug' => 'logout' , 'link' => wp_logout_url(), ); // If there's nothing to show, we're done. if ( count ( $bp_menu_items ) < 1 ) { return false; } $page_args = array (); foreach ( $bp_menu_items as $bp_item ) { // Remove <span>number</span>. $item_name = _bp_strip_spans_from_title( $bp_item [ 'name' ] ); $page_args [ $bp_item [ 'slug' ] ] = (object) array ( 'ID' => -1, 'post_title' => $item_name , 'post_author' => 0, 'post_date' => 0, 'post_excerpt' => $bp_item [ 'slug' ], 'post_type' => 'page' , 'post_status' => 'publish' , 'comment_status' => 'closed' , 'guid' => $bp_item [ 'link' ] ); } if ( empty ( buddypress()->wp_nav_menu_items ) ) { buddypress()->wp_nav_menu_items = new stdClass; } buddypress()->wp_nav_menu_items->loggedin = $page_args ; return $page_args ; } |
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.