bp_core_new_nav_default( array|string $args = '' )
Modify the default subnav item that loads when a top level nav item is clicked.
Description
Parameters
- $args
-
(Optional)
- 'parent_slug'
(string) The slug of the nav item whose default is being changed. - 'screen_function'
(callable) The new default callback function that will run when the nav item is clicked. - 'subnav_slug'
(string) The slug of the new default subnav item.
Default value: ''
- 'parent_slug'
Source
File: bp-core/bp-core-buddybar.php
function bp_core_new_nav_default( $args = '' ) { $bp = buddypress(); $defaults = array( 'parent_slug' => false, // Slug of the parent. 'screen_function' => false, // The name of the function to run when clicked. 'subnav_slug' => false // The slug of the subnav item to select when clicked. ); $r = wp_parse_args( $args, $defaults ); // This is specific to Members - it's not available in Groups. $parent_nav = $bp->members->nav->get_primary( array( 'slug' => $r['parent_slug'] ), false ); if ( ! $parent_nav ) { return ; } $parent_nav = reset( $parent_nav ); if ( ! empty( $parent_nav->screen_function ) ) { // Remove our screen hook if screen function is callable. if ( is_callable( $parent_nav->screen_function ) ) { remove_action( 'bp_screens', $parent_nav->screen_function, 3 ); } } // Edit the screen function for the parent nav. $bp->members->nav->edit_nav( array( 'screen_function' => &$r['screen_function'], 'default_subnav_slug' => $r['subnav_slug'], ), $parent_nav->slug ); if ( bp_is_current_component( $parent_nav->slug ) ) { // The only way to tell whether to set the subnav is to peek at the unfiltered_uri // Find the component. $component_uri_key = array_search( $parent_nav->slug, $bp->unfiltered_uri ); if ( false !== $component_uri_key ) { if ( ! empty( $bp->unfiltered_uri[$component_uri_key + 1] ) ) { $unfiltered_action = $bp->unfiltered_uri[$component_uri_key + 1]; } } // No subnav item has been requested in the URL, so set a new nav default. if ( empty( $unfiltered_action ) ) { if ( ! bp_is_current_action( $r['subnav_slug'] ) ) { if ( is_callable( $r['screen_function'] ) ) { add_action( 'bp_screens', $r['screen_function'], 3 ); } $bp->current_action = $r['subnav_slug']; unset( $bp->canonical_stack['action'] ); } // The URL is explicitly requesting the new subnav item, but should be // directed to the canonical URL. } elseif ( $unfiltered_action == $r['subnav_slug'] ) { unset( $bp->canonical_stack['action'] ); // In all other cases (including the case where the original subnav item // is explicitly called in the URL), the canonical URL will contain the // subnav slug. } else { $bp->canonical_stack['action'] = bp_current_action(); } } return; }
Changelog
Version | Description |
---|---|
BuddyPress 1.1.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.