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
299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 | 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.